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