atomic (Estructura)

Describe un objeto que realiza operaciones atómicas sobre un valor almacenado de tipo Ty.

template <class Ty>
struct atomic;

Miembros

Constructores públicos

Name

Descripción

atomic::atomic (Constructor)

Construye un objeto atómico.

Operadores públicos

Name

Descripción

atomic::operator Ty (Operador)

Lee y devuelve el valor almacenado. (atomic::load (Método))

atomic::operator= (Operador)

Utiliza un valor especificado para reemplazar el valor almacenado. (atomic::store (Método))

atomic::operator++ (Operador)

Incrementa el valor almacenado. Solo lo utilizan las especializaciones de entero y de puntero.

atomic::operator+= (Operador)

Suma un valor especificado al valor almacenado. Solo lo utilizan las especializaciones de entero y de puntero.

atomic::operator-- (Operador)

Disminuye el valor almacenado. Solo lo utilizan las especializaciones de entero y de puntero.

atomic::operator-= (Operador)

Resta un valor especificado del valor almacenado. Solo lo utilizan las especializaciones de entero y de puntero.

atomic::operator&= (Operador)

Realiza una operación and bit a bit sobre un valor especificado y el valor almacenado. Solo lo utilizan las especializaciones de entero.

atomic::operator|= (Operador)

Realiza una operación or bit a bit sobre un valor especificado y el valor almacenado. Solo lo utilizan las especializaciones de entero.

atomic::operator^= (Operador)

Realiza una operación exclusive or bit a bit sobre un valor especificado y el valor almacenado. Solo lo utilizan las especializaciones de entero.

Métodos públicos

Name

Descripción

atomic::compare_exchange_strong (Método)

Realiza una operación atomic_compare_and_exchange sobre this y devuelve el resultado.

atomic::compare_exchange_weak (Método)

Realiza una operación weak_atomic_compare_and_exchange sobre this y devuelve el resultado.

atomic::fetch_add (Método)

Suma un valor especificado al valor almacenado.

atomic::fetch_and (Método)

Realiza una operación and bit a bit sobre un valor especificado y el valor almacenado.

atomic::fetch_or (Método)

Realiza una operación or bit a bit sobre un valor especificado y el valor almacenado.

atomic::fetch_sub (Método)

Resta un valor especificado del valor almacenado.

atomic::fetch_xor (Método)

Realiza una operación exclusive or bit a bit sobre un valor especificado y el valor almacenado.

atomic::is_lock_free (Método)

Especifica si las operaciones atómicas sobre this no tienen bloqueos. Un tipo atómico no tiene bloqueos si ninguna operación atómica sobre ese tipo utiliza bloqueos.

atomic::load (Método)

Lee y devuelve el valor almacenado.

atomic::store (Método)

Utiliza un valor especificado para reemplazar el valor almacenado.

Comentarios

El tipo Ty se debe poder copiar de forma trivial. Es decir, si se usa memcpy para copiar sus bytes se debe generar un objeto Ty válido que se compare como igual que el objeto original. Las funciones miembro compare_exchange_weak y compare_exchange_strong utilizan memcmp para determinar si dos valores Ty son iguales. Estas funciones no utilizarán un operator== definido por Ty. Las funciones miembro de atomic utilizan memcpy para copiar valores de tipo Ty.

Existe una especialización parcial, atomic<Ty *>, para todos los tipos de puntero. La especialización permite sumar un desplazamiento al valor del puntero administrado o restar un desplazamiento del mismo. Las operaciones aritméticas toman un argumento de tipo ptrdiff_t y ajustan ese argumento según el tamaño de Ty para que sea coherente con la aritmética normal de dirección.

Existe una especialización para cada tipo entero excepto bool. Cada especialización proporciona un conjunto completo de métodos para operaciones aritméticas y lógicas atómicas.

atomic<char>

atomic<signed char>

atomic<unsigned char>

atomic<char16_t>

atomic<char32_t>

atomic<wchar_t>

atomic<short>

atomic<unsigned short>

atomic<int>

atomic<unsigned int>

atomic<long>

atomic<unsigned long>

atomic<long long>

atomic<unsigned long long>

Las especializaciones de entero se derivan de los tipos **atomic_**integral correspondientes. Por ejemplo, atomic<unsigned int> se deriva de atomic_uint.

Requisitos

Encabezado: atomic

Espacio de nombres: std

Vea también

Referencia

<atomic>

Otros recursos

Archivos de encabezado de la biblioteca estándar de C++