Sind sig_atomic_t und std :: atomic interchangeable

9

Wie im Titel angegeben. Kann ich std::atomic<> in einem Signalhandler verwenden oder stellt sig_atomic_t andere Compilerfunktionen zur Verfügung?

    
James 11.04.2013, 12:39
quelle

1 Antwort

11

n3376 1.9 / 6

Wenn die Verarbeitung der abstrakten Maschine durch den Empfang eines Signals unterbrochen wird, werden die Werte von Objekten, die sind weder

- vom Typ volatile std :: sig_atomic_t noch

- blockierungsfreie atomare Objekte (29.4)

sind während der Ausführung des Signal-Handlers und des Werts eines Objekts, das nicht in einem der beiden Werte enthalten ist, nicht spezifiziert Diese beiden Kategorien, die vom Handler geändert werden, werden undefiniert.

Sperrfrei 29.4 / 1,2

Die ATOMIC _..._ LOCK_FREE-Makros geben die blockierungsfreie Eigenschaft der entsprechenden atomaren Typen mit an die signierten und unsignierten Varianten gruppiert. Die Eigenschaften gelten auch für die entsprechende (teilweise) Spezialisierungen des atomaren Templates. Ein Wert von 0 gibt an, dass die Typen niemals sperrenfrei sind. Ein Wert von 1 zeigt an, dass die Typen manchmal gesperrt sind. Ein Wert von 2 gibt an, dass die Typen immer sperrenfrei sind.

Die Funktion atomic_is_lock_free (29.6) gibt an, ob das Objekt sperrfrei ist. In irgendeinem gegebenen Programm Das Ergebnis der blockierungsfreien Abfrage muss für alle Zeiger desselben Typs konsistent sein.

    
ForEveR 11.04.2013, 12:44
quelle

Tags und Links