Domanda

Vorrei documentare quali funzioni o macro di alto livello (ovvero C ++ non in linea) sono disponibili per le primitive atomiche Compare And Swap (CAS) ...

Ad esempio, WIN32 su x86 ha una famiglia di funzioni _InterlockedCompareExchange nell'intestazione <_intrin.h>.

È stato utile?

Soluzione

Consentirò ad altri di elencare le varie API specifiche della piattaforma, ma per riferimento futuro in C ++ 09 otterrai

atomic_compare_exchange() 

operazione nella nuova " Libreria delle operazioni atomiche " ;.

Altri suggerimenti

glib, una libreria di sistema comune su sistemi Linux e Unix (ma supportata anche su Windows e Mac OS X), definisce diverse operazioni atomiche , tra cui g_atomic_int_compare_and_exchange e g_atomic_pointer_compare_and_exchange .

GCC ha alcuni built-in per accessi atomici anche.

Su Solaris c'è " atomic.h " (ad es. lt;! sys / atomic.h <> gt;. )

MacOS X ha OSAtomic.h

Ci sono stati una serie di articoli del gruppo di lavoro su questo argomento che proponevano modifiche alla libreria standard C ++. WG N2427 ( C ++ Tipi e operazioni atomici ) è il più recente, che contribuisce alla sezione 29 - Biblioteca di operazioni atomiche - dello standard in sospeso.

anche java ha questa operazione CAS

vedi qui

ci sono usi pratici per questo, come un hashtable senza lock utilizzato nel sistema multiprocessore

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top