Как мне создать критическую секцию с помощью Boost?

Для своего кроссплатформенного приложения я начал использовать Boost, но не могу понять, как я могу реализовать код для воспроизведения поведения критической секции Win32 или блокировки .Net .

Я хочу написать метод Foo , который можно было бы вызывать из разных потоков для управления операциями записи в общие поля. Рекурсивные вызовы внутри одного и того же потока должны быть разрешены (Foo () -> Foo ()).

В C # эта реализация очень проста:

object _synch = new object();
void Foo()
{
    lock (_synch)  // one thread can't be lock by him self, but another threads must wait untill
    {
        // do some works
        if (...) 
        {
           Foo();
        }
    }
}
10
задан Rob Kennedy 15 August 2011 в 15:40
поделиться