Я пытаюсь выяснить область действия мьютексов и mutex lock_guard, но никто не смог мне это объяснить. Рассмотрим следующий код C++:
Код: Выделить всё
void somefunction
{
std::lock_guard guard(mutex1);
variable1++;
std::lock_guard guard(mutex2); //what if I took this mutex out?
variable2++;
/*
long block of code
*/
variable3++;
}
Я пытаюсь определить, какое правило защищает мьютекс lock_guard. Например, в текущем коде защищает ли мьютекс2 переменную3? Что, если мы удалим mutex2? Защищает ли мьютекс1 переменную1, переменную2 и переменную3? Как узнать, что защищает мьютекс? Спасибо
Подробнее здесь:
https://stackoverflow.com/questions/791 ... lock-guard