> -- Mirage писал(а):
> Конкретно на x86 - операция чтения может быть помещена CPU перед операцией записи, хотя встречена сперва запись.
Это хорошо, значит на x86 операция записи flag = 0; выполнится заведомо после фактического выхода из критической секции. Значит можно безбоязнено использовать простую flag = 0; вместо её интерлокед-варианта...

Я на работе уже на три ночи оставлял программу работать с простым flag = 0; она всё ещё и не зависла. Машина: Athlon64 X2.