atomic_is_lock_free
|
Definiert im Header
<stdatomic.h>
|
||
|
_Bool atomic_is_lock_free
(
const
volatile
A
*
obj
)
;
|
(seit C11) | |
Bestimmt, ob die atomaren Operationen auf allen Objekten des Typs
A
(dem Typ des Objekts, auf das
obj
zeigt) sperrfrei sind. In einem gegebenen Programmablauf ist das Ergebnis des Aufrufs von
atomic_is_lock_free
für alle Zeiger desselben Typs gleich.
Dies ist eine
generische Funktion
, die für alle
atomaren Objekttypen
A
definiert ist. Das Argument ist ein Zeiger auf einen flüchtigen atomaren Typ, um Adressen sowohl von nicht-flüchtigen als auch
flüchtigen
(z.B. speichergemappten E/A) atomaren Objekten zu akzeptieren, und die flüchtige Semantik wird beibehalten, wenn diese Operation auf flüchtige atomare Objekte angewendet wird.
Es ist nicht spezifiziert, ob der Name einer generischen Funktion ein Makro oder ein mit externer Bindung deklarierter Bezeichner ist. Wenn eine Makrodefinition unterdrückt wird, um auf eine tatsächliche Funktion zuzugreifen (z. B. in Klammern gesetzt wie ( atomic_is_lock_free ) ( ... ) ), oder ein Programm einen externen Bezeichner mit dem Namen einer generischen Funktion definiert, ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Parameter
| obj | - | Zeiger auf das zu untersuchende atomare Objekt |
Rückgabewert
true
wenn die Operationen auf allen Objekten des Typs
A
lock-free sind,
false
andernfalls.
Beispiel
#include <stdio.h> #include <stdatomic.h> _Atomic struct A { int a[100]; } a; _Atomic struct B { int x, y; } b; int main(void) { printf("_Atomic struct A is lock free? %s\n", atomic_is_lock_free(&a) ? "true" : "false"); printf("_Atomic struct B is lock free? %s\n", atomic_is_lock_free(&b) ? "true" : "false"); }
Mögliche Ausgabe:
_Atomic struct A is lock free? false _Atomic struct B is lock free? true
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| DR 465 | C11 | diese Funktion war pro Objekt | diese Funktion ist pro Typ |
Referenzen
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.17.5.1 Die generische Funktion atomic_is_lock_free (S: 205)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.17.5.1 Die atomic_is_lock_free generische Funktion (S: 280)
Siehe auch
|
gibt an, dass der gegebene atomare Typ sperrfrei ist
(Makrokonstante) |
|
|
C++-Dokumentation
für
atomic_is_lock_free
|
|