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>.

Foi útil?

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.

No Solaris há "atomic.h" (ou seja, ).

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top