Compartir a través de


Novedades de sincronización

Windows incluye los siguientes nuevos elementos de programación para la sincronización.

Windows 8

Funciones nuevas

DeleteSynchronizationBarrier

Elimina una barrera de sincronización.

EnterSynchronizationBarrier

Hace que el subproceso de llamada espere a una barrera de sincronización hasta que el número máximo de subprocesos haya entrado en la barrera.

GetOverlappedResultEx

Recupera los resultados de una operación superpuesta en el archivo especificado, la canalización con nombre o el dispositivo de comunicaciones dentro del intervalo de tiempo de espera especificado. El subproceso de llamada puede realizar una espera alertable.

InitializeSynchronizationBarrier

Especifica el número máximo de subprocesos y recuento de número de giros para una nueva barrera de sincronización.

WaitOnAddress

Espera a que cambie el valor en la dirección especificada.

WakeByAddressAll

Activa todos los subprocesos que están esperando el valor de una dirección para cambiar.

WakeByAddressSingle

Activa un subproceso que espera el valor de una dirección para cambiar.

Nuevas funciones interbloqueadas

InterlockedAddNoFence

Realiza una operación de suma atómica en los valores LONG especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedAddNoFence64

Realiza una operación de suma atómica en los valores LONGLONG especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedAndNoFence

Realiza una operación AND atómica en los valores LONG especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedAnd8NoFence

Realiza una operación AND atómica en los valores char especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedAnd16NoFence

Realiza una operación AND atómica en los valores SHORT especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedAnd64NoFence

Realiza una operación AND atómica en los valores LONGLONG especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedBitTestAndComplement64

Comprueba el bit especificado del valor LONG64 especificado y lo complementa. La operación es atómica.

InterlockedBitTestAndResetAcquire

Comprueba el bit especificado del valor LONG especificado y lo establece en 0. La operación es atómica y se realiza con la semántica de ordenación de memoria.

InterlockedBitTestAndResetRelease

Comprueba el bit especificado del valor LONG especificado y lo establece en 0. La operación es atómica y se realiza mediante la semántica de liberación de memoria.

InterlockedBitTestAndSetAcquire

Comprueba el bit especificado del valor LONG especificado y lo establece en 1. La operación es atómica y se realiza con la semántica de ordenación de memoria.

InterlockedBitTestAndSetRelease

Comprueba el bit especificado del valor LONG especificado y lo establece en 1. La operación es atómica y se realiza con semántica de ordenación de memoria de liberación.

InterlockedCompareExchangeNoFence

Realiza una operación atómica de comparación e intercambio en los valores especificados. La función compara dos valores de 32 bits especificados e intercambia con otro valor de 32 bits en función del resultado de la comparación. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedCompareExchange16

Realiza una operación atómica de comparación e intercambio en los valores especificados. La función compara dos valores de 16 bits especificados e intercambia con otro valor de 16 bits en función del resultado de la comparación.

InterlockedCompareExchange16Acquire

Realiza una operación atómica de comparación e intercambio en los valores especificados. La función compara dos valores de 16 bits especificados e intercambia con otro valor de 16 bits en función del resultado de la comparación. La operación se realiza con la semántica de ordenación de memoria.

InterlockedCompareExchange16Release

Realiza una operación atómica de comparación e intercambio en los valores especificados. La función compara dos valores de 16 bits especificados e intercambia con otro valor de 16 bits en función del resultado de la comparación. El intercambio se realiza con la semántica de ordenación de memoria de liberación.

InterlockedCompareExchange16NoFence

Realiza una operación atómica de comparación e intercambio en los valores especificados. La función compara dos valores de 16 bits especificados e intercambia con otro valor de 16 bits en función del resultado de la comparación. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedCompareExchangeNoFence64

Realiza una operación atómica de comparación e intercambio en los valores especificados. La función compara dos valores de 64 bits especificados e intercambia con otro valor de 64 bits en función del resultado de la comparación. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedCompareExchange128

Realiza una operación atómica de comparación e intercambio en los valores especificados. La función compara dos valores de 128 bits especificados e intercambia con otro valor de 128 bits en función del resultado de la comparación.

InterlockedCompareExchangePointerNoFence

Realiza una operación atómica de comparación e intercambio en los valores especificados. La función compara dos valores de puntero especificados e intercambia con otro valor de puntero en función del resultado de la comparación. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedDecrementNoFence

Disminuye (disminuye en uno) el valor de la variable de 32 bits especificada como una operación atómica. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedDecrement16

Disminuye (disminuye en uno) el valor de la variable de 16 bits especificada como una operación atómica.

InterlockedDecrement16Acquire

Disminuye (disminuye en uno) el valor de la variable de 16 bits especificada como una operación atómica. La operación se realiza con la semántica de ordenación de memoria.

InterlockedDecrement16Release

Disminuye (disminuye en uno) el valor de la variable de 16 bits especificada como una operación atómica. La operación se realiza con la semántica de ordenación de memoria de liberación.

InterlockedDecrement16NoFence

Disminuye (disminuye en uno) el valor de la variable de 16 bits especificada como una operación atómica. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedDecrementNoFence64

Disminuye (disminuye en uno) el valor de la variable de 64 bits especificada como una operación atómica. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedExchangeNoFence

Establece una variable de 64 bits en el valor especificado como una operación atómica. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedExchange8

Establece una variable de 8 bits en el valor especificado como una operación atómica.

InterlockedExchange16Acquire

Establece una variable de 16 bits en el valor especificado como una operación atómica. La operación se realiza mediante la semántica de ordenación de memoria.

InterlockedExchange16NoFence

Establece una variable de 16 bits en el valor especificado como una operación atómica. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedExchangeNoFence64

Establece una variable de 64 bits en el valor especificado como una operación atómica. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedExchangePointerNoFence

Intercambia de forma atómica un par de direcciones. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedExchangeAddNoFence

Realiza una adición atómica de dos valores de 32 bits. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedExchangeAddNoFence64

Realiza una adición atómica de dos valores de 64 bits. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedIncrementNoFence

Incrementa (aumenta en uno) el valor de la variable de 32 bits especificada como una operación atómica. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedIncrement16

Incrementa (aumenta en uno) el valor de la variable de 16 bits especificada como una operación atómica.

InterlockedIncrement16Acquire

Incrementa (aumenta en uno) el valor de la variable de 16 bits especificada como una operación atómica. La operación se realiza mediante la semántica de ordenación de memoria.

InterlockedIncrement16Release

Incrementa (aumenta en uno) el valor de la variable de 16 bits especificada como una operación atómica. La operación se realiza mediante la semántica de ordenación de memoria de versión.

InterlockedIncrement16NoFence

Incrementa (aumenta en uno) el valor de la variable de 16 bits especificada como una operación atómica. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedIncrementNoFence64

Incrementa (aumenta en uno) el valor de la variable de 64 bits especificada como una operación atómica. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedOrNoFence

Realiza una operación OR atómica en los valores LONG especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedOr8NoFence

Realiza una operación OR atómica en los valores char especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedOr16NoFence

Realiza una operación OR atómica en los valores SHORT especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedOr64NoFence

Realiza una operación OR atómica en los valores LONGLONG especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedPushListSListEx

Inserta una lista vinculada de forma singly en la parte delantera de otra lista vinculada de forma singly. El acceso a las listas se sincroniza en un sistema multiprocesador. Esta versión del método no usa la convención de llamada de __fastcall .

InterlockedXorNoFence

Realiza una operación XOR atómica en los valores LONG especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedXor8NoFence

Realiza una operación XOR atómica en los valores char especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedXor16NoFence

Realiza una operación XOR atómica en los valores SHORT especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

InterlockedXor64NoFence

Realiza una operación XOR atómica en los valores LONGLONG especificados. La operación se realiza de forma atómica, pero sin usar barreras de memoria.

Windows 7

Funciones nuevas

SetWaitableTimerEx

Activa el temporizador de espera especificado y proporciona información de contexto para el temporizador.

TryAcquireSRWLockExclusive

Intenta adquirir un bloqueo delgado de lector/escritor (SRW) en modo exclusivo. Si la llamada se realiza correctamente, el subproceso que realiza la llamada toma propiedad del bloqueo.

TryAcquireSRWLockShared

Intenta adquirir un bloqueo delgado de lector/escritor (SRW) en modo compartido. Si la llamada se realiza correctamente, el subproceso que realiza la llamada toma propiedad del bloqueo.

Nuevas estructuras

REASON_CONTEXT

Contiene información de contexto para un temporizador activado con SetWaitableTimerEx.