2010-02-23 20 views

risposta

1

Dipende da quello che si desidera scambiare. In assembler per x86 potresti essere in grado di ottenere un "quasi" atomico xor swap, altrimenti andrei con una soluzione che usa il locking, che sarà diversa su Win32/{Linux, Darwin}.

Se siete alla ricerca di una biblioteca, uno sguardo al TAEG (Apache Portable Runtime) - http://apr.apache.org/

+0

http://apr.apache.org/docs/apr/1.3/group__apr__atomic.html#ge45c529f14f8489102382bd3fd4cce22 in particolare si dovrebbe usare l'apr atomico confrontare e scambiare, usando lo stesso valore del confronto. Mettilo per un po 'perché non è garantito che lo swap abbia luogo. –

2

C'è un lock-free biblioteca in attesa di revisione in boost. Inoltre, se si scava nella fonte della libreria boost smart pointers, si troveranno op op in linea per più piattaforme. Un altro - Intel Threading Building Blocks ha implementazione del modello atomic<>.

+0

... e anche in C++ 0x. – janneb

+0

Giusto ... quale implementazione del compilatore di lavoro sta parlando? –