De alto nível Compare e funções de swap (CAS)?
-
02-07-2019 - |
Pergunta
Eu gostaria de documento que alto nível (ou seja, C ++ assembler não inline) funções ou macros estão disponíveis para primitivas atômicas Compare e swap (CAS) ...
por exemplo., Win32 em x86 tem uma família de funções _InterlockedCompareExchange
no cabeçalho <_intrin.h>
.
Solução
Vou deixar que os outros listar as várias APIs específicas de plataforma, mas para referência futura no C ++ 09 você terá a
atomic_compare_exchange()
operação na nova "biblioteca de operações atômicas".
Outras dicas
glib, uma biblioteca sistema comum em sistemas Linux e Unix (mas também suportado no Windows e Mac OS X), define várias operações atômicas , incluindo g_atomic_int_compare_and_exchange e g_atomic_pointer_compare_and_exchange .
GCC tem alguns built-ins para acessos atômicas também.
MacOS X tem OSAtomic.h
Tem havido uma série de artigos do grupo de trabalho sobre este assunto propondo alterações na biblioteca C ++ padrão. WG N2427 ( Tipos C ++ atômicas e operações ) é o mais recente, o que contribui para a seção 29 - Atomic biblioteca operações -. do padrão pendente
java tem esta operação CAS, também
veja aqui
existem usos práticos para isso, como um hashtable livre-lock usado em multiprocessador sistema