2008-09-30 5 views
12

Ich mag, was auf hohe Ebene dokumentieren (zB C++ nicht Inline-Assembler) Funktionen oder Makros für den Vergleich zur Verfügung stehen und Swap (CAS) Atom Primitiven ...Hochstufige Compare And Swap (CAS) -Funktionen?

Eg, WIN32 auf x86 eine Familie von Funktionen _InterlockedCompareExchange in der <_intrin.h> Kopfzeile.

Antwort

16

Ich werde andere lassen die verschiedenen plattformspezifischen APIs Liste, aber für die Zukunft in C++ 09 Sie werden die

atomic_compare_exchange() 

Betrieb in der neuen „Atomic-Operationen Bibliothek“ erhalten.

+0

Süße Antwort !! Kann nicht darauf warten ... – paxos1977

1

Java hat diesen CAS Betrieb auch

here

gibt es praktische Anwendungen für diese zu sehen, wie ein lock-free hashtable in Multiprozessorsystem

+0

Die Frage ist markiert C++;) – paxos1977

+0

+1 aber trotzdem danke. Jetzt weiß ich, dass Java auch CAS hat :) – Viet

8

glib, eine gemeinsame Systembibliothek unter Linux und Unix-Systemen verwendet (aber auch unter Windows und Mac OS X unterstützt), definiert several atomic operations, einschließlich g_atomic_int_compare_and_exchange und g_atomic_pointer_compare_and_exchange.

2

Es gab eine Reihe von Arbeitsgruppen zu diesem Thema, in denen Änderungen an der C++ - Standardbibliothek vorgeschlagen wurden. WG N2427 (C++ Atomarten und Operationen) ist die neueste, die zu Abschnitt 29 - Atomare Operationen Bibliothek - des ausstehenden Standards beiträgt.