atomic (Estructura)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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

template <class Ty>
struct atomic;

Constructores públicos

NombreDescripción
Constructor de atomic::AtomicConstruye un objeto atómico.

Operadores públicos

NombreDescripció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 aspecto = (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)](../Topic/atomic::operator%7C=%20Operator.md)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

NombreDescripció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 en this son sin bloqueos. Un tipo atómico sin 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.

El tipo Ty debe ser copiar de forma trivial. Es decir, usando memcpy para copiar sus bytes debe generar válido Ty objeto que es igual al objeto original. El compare_exchange_weak y compare_exchange_strong funciones miembro utilizan memcmp para determinar si dos Ty valores son iguales. Estas funciones no utilizarán un Ty definido por operator==. 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 correspondiente atomic_``integral tipos. Por ejemplo, atomic<unsigned int> se deriva de atomic_uint.

Encabezado: atómica

Espacio de nombres: std

<>>
Referencia de archivos de encabezado

Mostrar: