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