Win32 api имеет набор функций InterlockedXXX для атомарного и синхронного управления простыми переменными, однако, как представляется, нет функции InterlockedRead, чтобы просто получить значение переменной. Почему?
MSDN говорит, что "простые чтения и записи в правильно выровненные 32-битные переменные являются атомарными операциями", но добавляет, что "Однако доступ не гарантируется для синхронизации", что означает, как я понимаю, что простой операция чтения переменной может иметь место, а другая, скажем, операция InterlockedAdd. Итак, почему нет функции блокировки для чтения переменной?
Я думаю, что значение можно прочитать как результат InterlockedAdd-ing zero, но это не похоже на правильный путь.