Я хотел бы задокументировать, какие высокоуровневые (то есть C++ не встроенный ассемблер) функции или макросы доступны для атомарных примитивов Compare And Swap (CAS) ...
Например, WIN32 на x86 имеет семейство функций _InterlockedCompareExchange в заголовке <_intrin.h>.





Я позволю другим перечислить различные API-интерфейсы для конкретных платформ, но для дальнейшего использования в C++ 09 вы получите
atomic_compare_exchange()
работа в новой «Библиотеке атомарных операций».
В Solaris есть "atomic.h" (т.е. <sys / atomic.h>).
MacOS X имеет OSAtomic.h
В GCC тоже есть встроенные модули для атомарного доступа.
java также имеет эту операцию CAS
см. здесь
для этого есть практическое применение, например, безблокировочная хеш-таблица, используемый в многопроцессорной системе
glib, общая системная библиотека в системах Linux и Unix (но также поддерживается в Windows и Mac OS X), определяет несколько атомарных операций, включая g_atomic_int_compare_and_exchange и g_atomic_pointer_compare_and_exchange.
По этому поводу была опубликована серия документов рабочих групп, в которых предлагались изменения в Стандартной библиотеке C++. WG N2427 (Атомарные типы и операции C++) является самым последним, который вносит вклад в раздел 29 - Библиотека атомарных операций - ожидающего утверждения стандарта.
Вопрос помечен как C++;)