История изменений
Исправление Deleted, (текущая версия) :
нет. В с++2003, формально, нужно было делать и volatile и mutex. В с++11 - только mutex, без всяких формальностей. Раньше работало без volatile - потому, что таковы самые распространенные реализации. Мютекс лок/анлок для доступа на чтение и на запись - в общем случае нужен всегда, это даже не обсуждается.
Я это все пишу к тому, что не нужно заморачиваться какими-то странными «оптимизациями», доступ к общим данным нужно писать сразу с мутексом, а на старом стандарте (и если особо педантично подходить) - еще и с volatile.
Исходная версия Deleted, :
нет. В с++2003, формально, нужно было делать и volatile и mutex. В с++11 - только mutex, без всяких формальностей. Раньше работало без volatile - потому что такова реализация. Мютекс для доступа на чтение и на запись - НУЖЕН всегда, это как бы даже не обсуждается.