Biblioteca C ++ - <atómica>
Introducción
Estos son tipos que encapsulan un valor cuyo acceso está garantizado para no causar carreras de datos y se pueden usar para sincronizar los accesos a la memoria entre diferentes subprocesos y la biblioteca atómica proporciona componentes para operaciones atómicas detalladas que permiten la programación concurrente sin bloqueo. Cada operación atómica es indivisible con respecto a cualquier otra operación atómica que involucre el mismo objeto.
Tipo atómico
No Señor. | Tipos de miembros y definición |
---|---|
1 |
atómico
Plantilla de clase atómica y especializaciones para tipos bool, integral y puntero |
Tipos atómicos de estilo C
Los siguientes son tipos atómicos y también se definen en este encabezado.
atómica para tipos integrales fundamentales .
Estos son typedefs de la correspondiente especialización completa del atómico plantilla de clase o una clase base de dicha especialización.
atómicas para integrales basadas en ancho (las definidas en<cinttypes>).
Cada uno de estos es un alias de uno de los atómicos anteriores para tipos integrales fundamentales o de una especialización completa delatómicoplantilla de clase con un tipo integral extendido .
Donde N es uno en 8, 16, 32, 64 o cualquier otro ancho de tipo admitido por la biblioteca.
tipo contenido | tipo atómico | descripción |
---|---|---|
bool |
atomic_bool | |
char |
atomic_char | |
signed char |
atomic_schar | |
unsigned char |
atomic_uchar | |
short |
atomic_short | |
unsigned short |
atomic_ushort | |
int |
atomic_int | |
unsigned int |
atomic_uint | |
long |
atomic_long | |
unsigned long |
atomic_ulong | |
long long |
atomic_llong | |
unsigned long long |
atomic_ullong | |
wchar_t |
atomic_wchar_t | |
char16_t |
atomic_char16_t | |
char32_t |
atomic_char32_t | |
intmax_t | atomic_intmax_t | |
uintmax_t | atomic_uintmax_t | |
int_least norte_t |
atomic_int_least norte_t |
|
uint_least norte_t |
atomic_uint_least norte_t |
|
int_fast norte_t |
atomic_int_fast norte_t |
|
uint_fast norte_t |
atomic_uint_fast norte_t |
|
intptr_t | atomic_intptr_t | |
uintptr_t | atomic_uintptr_t | |
size_t | tamaño_atómico_t | |
ptrdiff_t | atomic_ptrdiff_t |
Operaciones sobre tipos atómicos
YNo Señor. | Operaciones y definición |
---|---|
1 |
atomic_is_lock_free
Se utiliza para comprobar si las operaciones del tipo atómico están libres de bloqueos. |
2 |
atomic_store y atomic_store_explicit
Reemplaza automáticamente el valor del objeto atómico con un argumento no atómico |
3 |
atomic_load y atomic_load_explicit
Obtiene atómicamente el valor almacenado en un objeto atómico |
4 |
atomic_exchange y atomic_exchange_explicit
Reemplaza atómicamente el valor del objeto atómico con un argumento no atómico y devuelve el antiguo valor del objeto atómico. |
5 |
atomic_compare_exchange_weak & atomic_compare_exchange_weak_explicit & atomic_compare_exchange_ strong & atomic_compare_exchange_ strong_explicit
Compara atómicamente el valor del objeto atómico con el argumento no atómico y realiza intercambio atómico si es igual o carga atómica si no |
6 |
atomic_fetch_add & atomic_fetch_add_explicit
Agrega un valor no atómico a un objeto atómico y obtiene el valor anterior del atómico. |
7 |
atomic_fetch_sub y atomic_fetch_sub_explicit
Resta un valor no atómico de un objeto atómico y obtiene el valor anterior del atómico. |
8 |
atomic_fetch_and & atomic_fetch_and_explicit
Reemplaza el objeto atómico con el resultado de AND lógico con un argumento no atómico y obtiene el valor anterior de la atómica. |
9 |
atomic_fetch_or & atomic_fetch_or_explicit
Reemplaza el objeto atómico con el resultado de la lógica OR con un argumento no atómico y obtiene el valor anterior de la atómica. |
10 |
atomic_fetch_xor & atomic_fetch_xor_explicit
Reemplaza el objeto atómico con el resultado de XOR lógico con un argumento no atómico y obtiene el valor anterior de la atómica. |
Tipo de bandera y operaciones
No Señor. | Tipo de bandera y definición |
---|---|
1 |
bandera_atómica
El tipo atómico booleano sin bloqueo |
2 |
atomic_flag_test_and_set & atomic_flag_test_and_set_explicit
Establece atómicamente la bandera en verdadero y devuelve su valor anterior |
3 |
atomic_flag_clear y atomic_flag_clear_explicit
Establece atómicamente el valor de la bandera en falso |