Welche Typen auf einem 64-Bit-Computer sind in GNU C und GNU C von Natur aus atomar?
Im Gegensatz zu C11 und höher oder C 11 und höher, die Folgendes bereitstellen Garantien für die Atomizität mit den Typen _Atomic oder std::atomic, die C- und C-Sprachstandards selbst geben keine Garantien für atomare Lesevorgänge und schreibt. Stattdessen hängt der Grad der Atomizität von der Compiler-Implementierung und der Zielarchitektur ab.
Auf einem 64-Bit-Computer, auf dem Linux auf einem x86-64-Prozessor läuft, variiert die natürliche Atomizität verschiedener Datentypen. Die GNU C- und GNU C-Compiler (gcc und g) bieten bestimmte Atomizitätsstufen für bestimmte Typen.
Atomtypen:
-
int: Das typedef _Atomic_word im Header zeigt an, dass int atomar ist.
-
__sig_atomic_t: Die Typdefinition im Header definiert einen atomaren Integer-Typ, der atomare Lese- und Schreibvorgänge bei asynchronen Interrupts gewährleistet.
Nichtatomare Typen:
- int64_t (long long)
- uint64_t (unsigned long long)
- double (64-bits)
- langes Doppel (auch 64-Bit)
Zusätzliche Hinweise:
- Atomizität bezieht sich auf atomare Lese- und Schreibvorgänge, nicht auf atomare Inkremente, Dekremente oder Verbindungen Zuweisung.
- Es ist wichtig zu beachten, dass bestimmte Typen in bestimmten Fällen garantiert atomar sind Kontexte (z. B. volatile sig_atomic_t ist atomar in Bezug auf Signale), sie sind nicht unbedingt atomar in Bezug auf Threads.
- Der Compiler kann Code auf eine Weise optimieren, die Annahmen über die Atomizität bricht, insbesondere wenn diese Annahmen nicht explizit sind in den Sprachstandards angegeben.
- Um einen threadsicheren gleichzeitigen Zugriff zu gewährleisten, ist die explizite Verwendung der Typen _Atomic oder std::atomic vorgesehen empfohlen.
Das obige ist der detaillierte Inhalt vonWelche Datentypen sind auf einem 64-Bit-GNU-C/C-System von Natur aus atomar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn