maq wrote:
>>> ME>P.S. В этом случае volatile не нужен.
>>> Почему?
>
> ME>Потому что volatile был придуман для регистров устройств и в C/C++ он не имеет никакого отношения к threading.
> ME>Подробности можешь разыскать на deja.com по ключевым словам "volatile terekhov".
>
> Тогда получается что нет способа гарантированно читать переменную в которую могут писать несколько потоков,
> даже если она защищена критичиской секцией?
Доступ к ф-циям примитивов синхронизации обычно является вызовом ф-ции, например EnterCriticalSection(). После вызова ф-ции компилятор не может делать никаких предположений о состоянии переменных, поэтому при следующем доступе переменная будет зачитана из памяти, независимо от volatile'ности. volatile ни достаточен, ни полезен.
Можно рассматривать volatile как антиоптимизацию в mutlithreaded programming. И как одно из самых распространенных заблуждений.
--
Maxim YegorushkinPosted via RSDN NNTP Server 1.9 beta