Я реализую механизм блокировки, используя атомарные (двойные) команды сравнения и свопа, например. cmpxchg16b
В настоящее время я пишу это в сборке и затем связываю его. Однако я задавался вопросом, есть ли способ заставить компилятор сделать это для меня автоматически? например блок объемного кода с "атомарным" и попробуйте понять, как реализовать код как атомную инструкцию в базовой архитектуре процессора (или генерировать ошибку во время компиляции, если базовая арка не поддерживает ее)?
P.S. Я знаю, что у gcc есть встроенные модули (по крайней мере для CAS)
http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Atomic-Builtins.html#Atomic-Builtins