Namespaces
Variants

Standard library header <stdatomic.h> (C++23)

From cppreference.net
Standard library headers

Cet en-tête était à l'origine dans la bibliothèque standard C ( <stdatomic.h> ).

Cet en-tête fait partie de la bibliothèque de prise en charge de la concurrence .

Il n'est pas spécifié si <stdatomic.h> fournit des déclarations dans l'espace de noms std .

**Note:** Aucune traduction n'a été effectuée car : - Le texte contenu dans les balises HTML a été préservé tel quel - Les termes spécifiques au C++ (`atomic_uchar`, `std::atomic`, `unsigned char`, `typedef`) n'ont pas été traduits - Le formatage HTML original a été maintenu - Le texte "(C++11)" est une référence technique qui ne nécessite pas de traduction **Note:** Aucune traduction n'a été effectuée car : - Tous les termes (`atomic_int_least16_t`, `std::atomic`, `std::int_least16_t`) sont des termes spécifiques au C++ qui ne doivent pas être traduits - Le texte `(C++11)` et `(typedef)` sont des indications techniques qui restent en anglais dans le contexte de la programmation - Le reste du contenu est constitué de balises HTML et de code qui doivent être préservés **Note:** Aucune traduction n'a été effectuée car : - Le texte contenu dans les balises HTML est principalement du code C++ (`atomic_int_least64_t`, `std::atomic`, `std::int_least64_t`) - Les termes C++ spécifiques ne doivent pas être traduits - Les annotations comme `(C++11)` et `(typedef)` sont des conventions techniques internationales - Toutes les balises et attributs HTML ont été préservés intacts **Note:** Aucune traduction n'a été effectuée car : - Le texte contenu est principalement du code C++ (`atomic_int_fast16_t`, `std::atomic`, `std::int_fast16_t`) - Les termes spécifiques au C++ ne doivent pas être traduits - Le seul texte non-technique `(typedef)` est un terme de programmation standard qui reste identique en français - La mention `(C++11)` est une référence de version qui ne se traduit pas

Table des matières

Macros

(C++23)
macro de compatibilité tel que _Atomic ( T ) est identique à std:: atomic < T >
(macro fonction)
initialise un std::atomic_flag à false
(constante macro)

Types

le type atomique booléen sans verrouillage
(classe)
définit les contraintes d'ordonnancement de la mémoire pour l'opération atomique donnée
(enum)
std:: atomic < bool >
(typedef)
std:: atomic < char >
(typedef)
std:: atomic < signed char >
(typedef)
std:: atomic < unsigned char >
(typedef)
std:: atomic < short >
(typedef)
std:: atomic < unsigned short >
(typedef)
(C++11)
std:: atomic < int >
(typedef)
std:: atomic < unsigned int >
(typedef)
std:: atomic < long >
(typedef)
std:: atomic < unsigned long >
(typedef)
std:: atomic < long long >
(typedef)
std:: atomic < unsigned long long >
(typedef)
std:: atomic < char8_t >
(typedef)
std:: atomic < char16_t >
(typedef)
std:: atomic < char32_t >
(typedef)
std:: atomic < wchar_t >
(typedef)
(C++11) (optionnel)
std:: atomic < std:: int8_t >
(typedef)
(C++11) (optionnel)
std:: atomic < std:: uint8_t >
(typedef)
(C++11) (optionnel)
std:: atomic < std:: int16_t >
(typedef)
(C++11) (optionnel)
std:: atomic < std:: uint16_t >
(typedef)
(C++11) (optionnel)
std:: atomic < std:: int32_t >
(typedef)
(C++11) (optionnel)
std:: atomic < std:: uint32_t >
(typedef)
(C++11) (optionnel)
std:: atomic < std:: int64_t >
(typedef)
(C++11) (optionnel)
std:: atomic < std:: uint64_t >
(typedef)
std:: atomic < std:: int_least8_t >
(typedef)
std:: atomic < std:: uint_least8_t >
(typedef)
std:: atomic < std:: int_least16_t >
(typedef)
std:: atomic < std:: uint_least16_t >
(typedef)
std:: atomic < std:: int_least32_t >
(typedef)
std:: atomic < std:: uint_least32_t >
(typedef)
std:: atomic < std:: int_least64_t >
(typedef)
std:: atomic < std:: uint_least64_t >
(typedef)
std:: atomic < std:: int_fast8_t >
(typedef)
std:: atomic < std:: uint_fast8_t >
(typedef)
std:: atomic < std:: int_fast16_t >
(typedef)
std:: atomic < std:: uint_fast16_t >
(typedef)
std:: atomic < std:: int_fast32_t >
(typedef)
std:: atomic < std:: uint_fast32_t >
(typedef)
std:: atomic < std:: int_fast64_t >
(typedef)
std:: atomic < std:: uint_fast64_t >
(typedef)
(C++11) (optionnel)
std:: atomic < std:: intptr_t >
(typedef)
(C++11) (optionnel)
std:: atomic < std:: uintptr_t >
(typedef)
std:: atomic < std:: size_t >
(typedef)
std:: atomic < std:: ptrdiff_t >
(typedef)
std:: atomic < std:: intmax_t >
(typedef)
std:: atomic < std:: uintmax_t >
(typedef)

Fonctions

vérifie si les opérations du type atomique sont sans verrouillage
(modèle de fonction)
remplace atomiquement la valeur de l'objet atomique avec un argument non atomique
(modèle de fonction)
obtient atomiquement la valeur stockée dans un objet atomique
(modèle de fonction)
remplace atomiquement la valeur de l'objet atomique par l'argument non atomique et retourne l'ancienne valeur de l'atome
(fonction template)
compare atomiquement la valeur de l'objet atomique avec l'argument non-atomique et effectue un échange atomique si égal ou un chargement atomique sinon
(modèle de fonction)
ajoute une valeur non atomique à un objet atomique et obtient la valeur précédente de l'atome
(modèle de fonction)
soustrait une valeur non atomique d'un objet atomique et obtient la valeur précédente de l'atome
(modèle de fonction)
remplace l'objet atomique par le résultat de l'opération ET bit à bit avec un argument non atomique et obtient la valeur précédente de l'atome
(modèle de fonction)
remplace l'objet atomique par le résultat du OU binaire avec un argument non atomique et obtient la valeur précédente de l'atome
(modèle de fonction)
remplace l'objet atomique par le résultat du OU exclusif binaire avec un argument non atomique et obtient la valeur précédente de l'atomique
(modèle de fonction)
définit atomiquement le drapeau à true et retourne sa valeur précédente
(fonction)
définit atomiquement la valeur du drapeau à false
(fonction)
primitive de synchronisation de barrière mémoire générique dépendant de l'ordre mémoire
(fonction)
barrière entre un thread et un gestionnaire de signal exécuté dans le même thread
(fonction)

Synopsis

template<class T>
  using __std_atomic = std::atomic<T>;        // exposition uniquement
#define _Atomic(T) __std_atomic<T>
#define ATOMIC_BOOL_LOCK_FREE /* voir description */
#define ATOMIC_CHAR_LOCK_FREE /* voir description */
#define ATOMIC_CHAR16_T_LOCK_FREE /* voir description */
#define ATOMIC_CHAR32_T_LOCK_FREE /* voir description */
#define ATOMIC_WCHAR_T_LOCK_FREE /* voir description */
#define ATOMIC_SHORT_LOCK_FREE /* voir description */
#define ATOMIC_INT_LOCK_FREE /* voir description */
#define ATOMIC_LONG_LOCK_FREE /* voir description */
#define ATOMIC_LLONG_LOCK_FREE /* voir description */
#define ATOMIC_POINTER_LOCK_FREE /* voir description */
using std::memory_order;                // voir description
using std::memory_order_relaxed;        // voir description
using std::memory_order_consume;        // voir description
using std::memory_order_acquire;        // voir description
using std::memory_order_release;        // voir description
using std::memory_order_acq_rel;        // voir description
using std::memory_order_seq_cst;        // voir description
using std::atomic_flag;                 // voir description
using std::atomic_bool;                 // voir description
using std::atomic_char;                 // voir description
using std::atomic_schar;                // voir description
using std::atomic_uchar;                // voir description
using std::atomic_short;                // voir description
using std::atomic_ushort;               // voir description
using std::atomic_int;                  // voir description
using std::atomic_uint;                 // voir description
using std::atomic_long;                 // voir description
using std::atomic_ulong;                // voir description
using std::atomic_llong;                // voir description
using std::atomic_ullong;               // voir description
using std::atomic_char8_t;              // voir description
using std::atomic_char16_t;             // voir description
using std::atomic_char32_t;             // voir description
using std::atomic_wchar_t;              // voir description
using std::atomic_int8_t;               // voir description
using std::atomic_uint8_t;              // voir description
using std::atomic_int16_t;              // voir description
using std::atomic_uint16_t;             // voir description
using std::atomic_int32_t;              // voir description
using std::atomic_uint32_t;             // voir description
using std::atomic_int64_t;              // voir description
using std::atomic_uint64_t;             // voir description
using std::atomic_int_least8_t;         // voir description
using std::atomic_uint_least8_t;        // voir description
using std::atomic_int_least16_t;        // voir description
using std::atomic_uint_least16_t;       // voir description
using std::atomic_int_least32_t;        // voir description
using std::atomic_uint_least32_t;       // voir description
using std::atomic_int_least64_t;        // voir description
using std::atomic_uint_least64_t;       // voir description
using std::atomic_int_fast8_t;          // voir description
using std::atomic_uint_fast8_t;         // voir description
using std::atomic_int_fast16_t;         // voir description
using std::atomic_uint_fast16_t;        // voir description
using std::atomic_int_fast32_t;         // voir description
using std::atomic_uint_fast32_t;        // voir description
using std::atomic_int_fast64_t;         // voir description
using std::atomic_uint_fast64_t;        // voir description
using std::atomic_intptr_t;             // voir description
using std::atomic_uintptr_t;            // voir description
using std::atomic_size_t;               // voir description
using std::atomic_ptrdiff_t;            // voir description
using std::atomic_intmax_t;             // voir description
using std::atomic_uintmax_t;            // voir description
using std::atomic_is_lock_free;                         // voir description
using std::atomic_load;                                 // voir description
using std::atomic_load_explicit;                        // voir description
using std::atomic_store;                                // voir description
using std::atomic_store_explicit;                       // voir description
using std::atomic_exchange;                             // voir description
using std::atomic_exchange_explicit;                    // voir description
using std::atomic_compare_exchange_strong;              // voir description
using std::atomic_compare_exchange_strong_explicit;     // voir description
using std::atomic_compare_exchange_weak;                // voir description
using std::atomic_compare_exchange_weak_explicit;       // voir description
using std::atomic_fetch_add;                            // voir description
using std::atomic_fetch_add_explicit;                   // voir description
using std::atomic_fetch_sub;                            // voir description
using std::atomic_fetch_sub_explicit;                   // voir description
using std::atomic_fetch_or;                             // voir description
using std::atomic_fetch_or_explicit;                    // voir description
using std::atomic_fetch_xor;                            // voir description
using std::atomic_fetch_xor_explicit;                   // voir description
using std::atomic_fetch_and;                            // voir description
using std::atomic_fetch_and_explicit;                   // voir description
using std::atomic_flag_test_and_set;                    // voir description
using std::atomic_flag_test_and_set_explicit;           // voir description
using std::atomic_flag_clear;                           // voir description
using std::atomic_flag_clear_explicit;                  // voir description
#define ATOMIC_FLAG_INIT /* voir description */
using std::atomic_thread_fence;                         // voir description
using std::atomic_signal_fence;                         // voir description