Здравствуйте, Максим, Вы писали:
М>Мне кажется, Евгений, что так делать не стоит, volatile не гарантирует синхронизацию общих данных.
volatile должно гарантировать отсутствие буферизации, добавляемой компилятором. Если я, в свою очередь, гарантирую запись изменений в память параллельным потоком, то что может помешать считыванию измененных значений?
М>Лучше использовать гарантированно lock-free на любых платформах std::atomic_flag
Мне пока не актуальны платформы, отличные от x86/x64, даже ARM под большим вопросом. Ну и не люблю я библиотечных конструкций в ядерном коде — они то реализованы "с особенностями", то тянут за собой лишний код из CRT, то не реализованы вообще.