Namespaces
Variants

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

From cppreference.net
Standard library headers

Este encabezado estaba originalmente en la biblioteca estándar de C ( <stdatomic.h> ).

Este encabezado es parte de la biblioteca de soporte de concurrencia .

No está especificado si <stdatomic.h> proporciona alguna declaración en el espacio de nombres std .

td> barrera entre un hilo y un manejador de señales ejecutado en el mismo hilo
(función)

Contenidos

Macros

(C++23)
macro de compatibilidad tal que _Atomic ( T ) es idéntico a std:: atomic < T >
(macro de función)
inicializa un std::atomic_flag a false
(constante macro)

Tipos

el tipo atómico booleano libre de bloqueo
(clase)
define las restricciones de ordenamiento de memoria para la operación atómica dada
(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) (opcional)
std:: atomic < std:: int8_t >
(typedef)
(C++11) (opcional)
std:: atomic < std:: uint8_t >
(typedef)
(C++11) (opcional)
std:: atomic < std:: int16_t >
(typedef)
(C++11) (opcional)
std:: atomic < std:: uint16_t >
(typedef)
(C++11) (opcional)
std:: atomic < std:: int32_t >
(typedef)
(C++11) (opcional)
std:: atomic < std:: uint32_t >
(typedef)
(C++11) (opcional)
std:: atomic < std:: int64_t >
(typedef)
(C++11) (opcional)
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) (opcional)
std:: atomic < std:: intptr_t >
(typedef)
(C++11) (opcional)
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)

Funciones

verifica si las operaciones del tipo atómico son libres de bloqueo
(plantilla de función)
reemplaza atómicamente el valor del objeto atómico con un argumento no atómico
(plantilla de función)
obtiene atómicamente el valor almacenado en un objeto atómico
(plantilla de función)
reemplaza atómicamente el valor del objeto atómico con el argumento no atómico y devuelve el valor antiguo del atómico
(plantilla de función)
compara atómicamente el valor del objeto atómico con el argumento no atómico y realiza un intercambio atómico si son iguales o una carga atómica si no lo son
(plantilla de función)
añade un valor no atómico a un objeto atómico y obtiene el valor previo del atómico
(plantilla de función)
resta un valor no atómico de un objeto atómico y obtiene el valor previo del atómico
(plantilla de función)
reemplaza el objeto atómico con el resultado de la operación AND bit a bit con un argumento no atómico y obtiene el valor previo del atómico
(plantilla de función)
reemplaza el objeto atómico con el resultado de OR bit a bit con un argumento no atómico y obtiene el valor previo del atómico
(plantilla de función)
reemplaza el objeto atómico con el resultado de la operación XOR bit a bit con un argumento no atómico y obtiene el valor previo del atómico
(plantilla de función)
establece atómicamente la bandera a true y devuelve su valor anterior
(función)
establece atómicamente el valor del flag a false
(función)
primitiva de sincronización de barrera genérica dependiente del orden de memoria
(función)

Sinopsis

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