Простейшая возможная реализация критической секции? - PullRequest
0 голосов
/ 06 августа 2011

В одном из моих методов C ++ я должен сделать это таким образом, чтобы только один поток обращался к этому куску кода в данный момент времени.

void SomeMethod()
{
    //critical section starts
    someValue++;
    someVariable = someValue
    //critical section ends
}

Может ли кто-нибудь подсказать мне, каким был бы самый простой и желательно наименьший (разумный код) возможный способ добиться этого? Я не хочу использовать Boost Library и не хочу вносить путаницу в свой код только для того, чтобы добиться этого. Я ищу стандартное решение C ++, а не то, что работает только в Windows.

1 Ответ

0 голосов
/ 06 августа 2011

Если вы не хотите использовать Boost ... Вас могут заинтересовать алгоритмы Деккера , Петерсона и Лампорта . Но я не совсем уверен, что их практическая реализация будет работать нормально.

...