Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

<atomic>

Define clases y clases de plantilla para utilizar para crear los tipos que las operaciones atómicas admiten.

#include <atomic>
Nota Nota

En el código compilado utilizando /clr o /clr:pure, este encabezado está bloqueado.

Una operación atómica tiene dos propiedades de clave que le ayudan a varios subprocesos de uso correctamente a manipular un objeto sin utilizar la exclusión mutua se bloqueen.

  • Dado que una operación atómica es indivisible, una segunda operación atómica en el mismo objeto desde un subproceso diferente puede obtener el estado de objeto antes o después de la primera operación atómica.

  • Por su argumento memory_order , una operación atómica establece ordenar los requisitos para la visibilidad de los efectos de otras operaciones atómicas en el mismo subproceso. Por consiguiente, deshabilita las optimizaciones del compilador que cumplen los requisitos de ordenación.

En algunas plataformas, no sería posible implementar eficazmente las operaciones atómicas para algunos tipos sin utilizar mutex bloqueos. Un tipo atómico es bloqueo- libre si ninguna operaciones atómicas en ese uso de tipo bloqueos.

La clase atomic_flag proporciona un tipo atómico mínimo que contiene un indicador bool . Las operaciones son siempre bloqueo- disponibles.

La clase de plantilla atomic<Ty> almacena un objeto del tipo Ty de argumentos y proporciona acceso atómico que valor almacenado. Puede crear instancias mediante cualquier tipo que se pueden copiar mediante memcpy y comprobar la igualdad mediante memcmp. En particular, puede utilizarlo con tipos definidos por el usuario que cumplen estos requisitos y, en muchos casos, con los tipos de punto flotante.

La plantilla también tiene un conjunto de especializaciones de tipos enteros y de una especialización parcial para punteros. Estas especializaciones proporcionan operaciones adicionales que no están disponibles a través de la plantilla principal.

Especializaciones de puntero

Especializaciones parciales atomic<Ty *> se aplican a todos los tipos de puntero. Proporcionan métodos para la aritmética con punteros.

Especializaciones completas

Especializaciones atomic<integral> se aplican a todos los tipos enteros. Proporcionan operaciones adicionales que no están disponibles a través de la plantilla principal.

Cada tipo atomic<integral> tiene una macro correspondiente que puede utilizar en if directive para determinar en tiempo de compilación si las operaciones en ese tipo son bloqueo- disponibles. Si el valor de la macro es cero, las operaciones en el tipo no son bloqueo- disponibles. Si el valor es 1, las operaciones podrían ser bloqueo- libres, y se requiere una comprobación en tiempo de ejecución. Si el valor es 2, las operaciones son bloqueo- disponibles. Puede utilizar la función atomic_is_lock_free para determinar en tiempo de ejecución si las operaciones en el tipo son bloqueo- disponibles.

Para cada uno de los tipos enteros, hay un tipo atómico denominado correspondiente que administra un objeto de ese tipo entero. Cada tipo atomic_integral tiene el mismo conjunto de funciones miembro que la instancia correspondiente atomic<Ty> y puede pasarse a funciones atómicas de no un miembro de los.

Tipo atomic_integral.

Tipo entero

Macro deatomic_is_lock_free

atomic_char

char

ATOMIC_CHAR_LOCK_FREE

atomic_schar

signed char

ATOMIC_CHAR_LOCK_FREE

atomic_uchar

unsigned char

ATOMIC_CHAR_LOCK_FREE

atomic_char16_t

char16_t

ATOMIC_CHAR16_T_LOCK_FREE

atomic_char32_t

char32_t

ATOMIC_CHAR32_T_LOCK_FREE

atomic_wchar_t

wchar_t

ATOMIC_WCHAR_T_LOCK_FREE

atomic_short

short

ATOMIC_SHORT_LOCK_FREE

atomic_ushort

unsigned short

ATOMIC_SHORT_LOCK_FREE

atomic_int

int

ATOMIC_INT_LOCK_FREE

atomic_uint

unsigned int

ATOMIC_INT_LOCK_FREE

atomic_long

long

ATOMIC_LONG_LOCK_FREE

atomic_ulong

unsigned long

ATOMIC_LONG_LOCK_FREE

atomic_llong

long long

ATOMIC_LLONG_LOCK_FREE

atomic_ullong

unsigned long long

ATOMIC_LLONG_LOCK_FREE

Los nombres de Typedef existen para las especializaciones de plantilla atómica para algunos de los tipos definidos en el encabezado <inttypes.h>.

Tipo atómico

Nombre de Typedef

atomic_int8_t

atomic<int8_t>

atomic_uint8_t

atomic<uint8_t>

atomic_int16_t

atomic<int16_t>

atomic_uint16_t

atomic<uint16_t>

atomic_int32_t

atomic<int32_t>

atomic_uint32_t

atomic<uint32_t>

atomic_int64_t

atomic<int64_t>

atomic_uint64_t

atomic<uint64_t>

atomic_int_least8_t

atomic<int_least8_t>

atomic_uint_least8_t

atomic<uint_least8_t>

atomic_int_least16_t

atomic<int_least16_t>

atomic_uint_least16_t

atomic<uint_least16_t>

atomic_int_least32_t

atomic<int_least32_t>

atomic_uint_least32_t

atomic<uint_least32_t>

atomic_int_least64_t

atomic<int_least64_t>

atomic_uint_least64_t

atomic<uint_least64_t>

atomic_int_fast8_t

atomic<int_fast8_t>

atomic_uint_fast8_t

atomic<uint_fast8_t>

atomic_int_fast16_t

atomic<int_fast16_t>

atomic_uint_fast16_

atomic<uint_fast16_t>

atomic_int_fast32_t

atomic<int_fast32_t>

atomic_uint_fast32_t

atomic<uint_fast32_t>

atomic_int_fast64_t

atomic<int_fast64_t>

atomic_uint_fast64_t

atomic<uint_fast64_t>

atomic_intptr_t

atomic<intptr_t>

atomic_uintptr_t

atomic<uintptr_t>

atomic_size_t

atomic<size_t>

atomic_ptrdiff_t

atomic<ptrdiff_t>

atomic_intmax_t

atomic<intmax_t>

atomic_uintmax_t

atomic<uintmax_t>

Structs

Nombre

Descripción

atomic (Estructura)

Describe un objeto que realiza operaciones atómicas en un valor almacenado.

atomic_flag (Estructura)

Describe un objeto que atómico conjuntos y borren un indicador bool .

Enumeraciones

Nombre

Descripción

memory_order (Enum)

Nombres simbólicos de fuentes para operaciones de sincronización en ubicaciones de memoria. Estas operaciones afectan a cómo las asignaciones en un subproceso se hacen visibles en otro.

Funciones

En la lista siguiente, funciones que no finalizan en _explicit tienen la semántica _explicitcorrespondiente, salvo que las tienen los argumentos implícitos memory_ordermemory_order_seq_cst.

Nombre

Descripción

atomic_compare_exchange_strong (Función)

Realiza un atómico comparan e intercambian la operación.

atomic_compare_exchange_strong_explicit (Función)

Realiza un atómico comparan e intercambian la operación.

atomic_compare_exchange_weak (Función)

Realiza un atómico débil comparan e intercambian la operación.

atomic_compare_exchange_weak_explicit (Función)

Realiza un atómico débil comparan e intercambian la operación.

atomic_exchange (Función)

Reemplaza un valor almacenado.

atomic_exchange_explicit (Función)

Reemplaza un valor almacenado.

atomic_fetch_add (Función)

Agrega un valor especificado con el valor almacenado existente.

atomic_fetch_add_explicit (Función)

Agrega un valor especificado con el valor almacenado existente.

atomic_fetch_and (Función)

Realiza and bit a bit en un valor especificado y un valor almacenado existente.

atomic_fetch_and_explicit (Función)

Realiza and bit a bit en un valor especificado y un valor almacenado existente.

atomic_fetch_or (Función)

Realiza or bit a bit en un valor especificado y un valor almacenado existente.

atomic_fetch_or_explicit (Función)

Realiza or bit a bit en un valor especificado y un valor almacenado existente.

atomic_fetch_sub (Función)

Resta un valor especificado de un valor almacenado existente.

atomic_fetch_sub_explicit (Función)

Resta un valor especificado de un valor almacenado existente.

atomic_fetch_xor (Función)

Realiza exclusive or bit a bit en un valor especificado y un valor almacenado existente.

atomic_fetch_xor_explicit (Función)

Realiza exclusive or bit a bit en un valor especificado y un valor almacenado existente.

atomic_flag_clear (Función)

Establece la marca en un objeto atomic_flag a false.

atomic_flag_clear_explicit (Función)

Establece la marca en un objeto atomic_flag a false.

atomic_flag_test_and_set (Función)

Establece la marca en un objeto atomic_flag a true.

atomic_flag_test_and_set_explicit (Función)

Establece la marca en un objeto atomic_flag a true.

atomic_init (Función)

Establece el valor almacenado en un objeto atomic .

atomic_is_lock_free (Función)

Especifica si las operaciones atómicas en un objeto especificado son bloqueo- disponibles.

atomic_load (Función)

Atómico recupera un valor.

atomic_load_explicit (Función)

Atómico recupera un valor.

atomic_signal_fence (Función)

Actúa como barrera que establezca la memoria que solicita requisitos entre las barreras en un subproceso de la llamada que tiene los controladores señalado ejecutados en el mismo subproceso.

atomic_store (Función)

Atómico almacena un valor.

atomic_store_explicit (Función)

Atómico almacena un valor.

atomic_thread_fence (Función)

Actúa como barrera que establezca la memoria que solicita requisitos con respecto a otras barreras.

kill_dependency (Función)

Divide una cadena posible de la dependencia.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.