Типа, какие операции нужно защитить от выполнения параллельно в нескольких потоках. Код:
if ( 10 == counter ) return;
++counter;
Насколько я понимаю, делать надо так:
mutex.lock();
if ( 10 == counter )
{
mutex.unlock();
return;
}
++counter;
mutex.unlock();
Нельзя ведь считать, что 10 == counter выполняется за 1 такт или ++counter за 1 такт. Кто знает что это за процессор и во что компилятор скомпилировал выражение «++counter;»? Вдруг запись выполняется извращенческим способом в 32 такта последовательным сдвигом 32-х бит слева направо, кто ж знает? Поэтому защищать надо и чтение и запись. Некоторые просто в этом примере утверждают, что чтение можно не защищать. И даже иногда бывают такие варианты ответов в тестах, которые не предполагают защиты чтения...