Novidades na sincronização

O Windows inclui os novos elementos de programação a seguir para sincronização.

Windows 8

Novas funções

DeleteSynchronizationBarrier

Exclui uma barreira de sincronização.

EnterSynchronizationBarrier

Faz com que o thread de chamada aguarde em uma barreira de sincronização até que o número máximo de threads tenha entrado na barreira.

GetOverlappedResultEx

Recupera os resultados de uma operação sobreposta no arquivo especificado, pipe nomeado ou dispositivo de comunicações dentro do intervalo de tempo limite especificado. O thread de chamada pode executar uma espera alertável.

InitializeSynchronizationBarrier

Especifica o número máximo de threads e a contagem de rotação para uma nova barreira de sincronização.

WaitOnAddress

Aguarda a alteração do valor no endereço especificado.

WakeByAddressAll

Ativa todos os threads que estão aguardando a alteração do valor de um endereço.

WakeByAddressSingle

Ativa um thread que está aguardando a alteração do valor de um endereço.

Novas funções intertravadas

InterlockedAddNoFence

Executa uma operação de adição atômica nos valores LONG especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedAddNoFence64

Executa uma operação de adição atômica nos valores LONGLONG especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedAndNoFence

Executa uma operação AND atômica nos valores LONG especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedAnd8NoFence

Executa uma operação AND atômica nos valores char especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedAnd16NoFence

Executa uma operação AND atômica nos valores SHORT especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedAnd64NoFence

Executa uma operação AND atômica nos valores LONGLONG especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedBitTestAndComplement64

Testa o bit especificado do valor LONG64 especificado e o complementa. A operação é atômica.

InterlockedBitTestAndResetAcquire

Testa o bit especificado do valor LONG especificado e o define como 0. A operação é atômica e é executada com semântica de ordenação de memória adquirida.

InterlockedBitTestAndResetRelease

Testa o bit especificado do valor LONG especificado e o define como 0. A operação é atômica e é executada usando semântica de liberação de memória.

InterlockedBitTestAndSetAcquire

Testa o bit especificado do valor LONG especificado e o define como 1. A operação é atômica e é executada com semântica de ordenação de memória adquirida.

InterlockedBitTestAndSetRelease

Testa o bit especificado do valor LONG especificado e o define como 1. A operação é atômica e é executada com semântica de ordenação de memória de liberação.

InterlockedCompareExchangeNoFence

Executa uma operação atômica de comparação e troca nos valores especificados. A função compara dois valores de 32 bits especificados e troca com outro valor de 32 bits com base no resultado da comparação. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedCompareExchange16

Executa uma operação atômica de comparação e troca nos valores especificados. A função compara dois valores de 16 bits especificados e troca com outro valor de 16 bits com base no resultado da comparação.

InterlockedCompareExchange16Acquire

Executa uma operação atômica de comparação e troca nos valores especificados. A função compara dois valores de 16 bits especificados e troca com outro valor de 16 bits com base no resultado da comparação. A operação é executada com semântica de ordenação de memória de aquisição.

InterlockedCompareExchange16Release

Executa uma operação atômica de comparação e troca nos valores especificados. A função compara dois valores de 16 bits especificados e troca com outro valor de 16 bits com base no resultado da comparação. A troca é executada com semântica de ordenação de memória de versão.

InterlockedCompareExchange16NoFence

Executa uma operação atômica de comparação e troca nos valores especificados. A função compara dois valores de 16 bits especificados e troca com outro valor de 16 bits com base no resultado da comparação. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedCompareExchangeNoFence64

Executa uma operação atômica de comparação e troca nos valores especificados. A função compara dois valores de 64 bits especificados e troca com outro valor de 64 bits com base no resultado da comparação. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedCompareExchange128

Executa uma operação atômica de comparação e troca nos valores especificados. A função compara dois valores de 128 bits especificados e troca com outro valor de 128 bits com base no resultado da comparação.

InterlockedCompareExchangePointerNoFence

Executa uma operação atômica de comparação e troca nos valores especificados. A função compara dois valores de ponteiro especificados e trocas com outro valor de ponteiro com base no resultado da comparação. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedDecrementNoFence

Diminui (diminui em um) o valor da variável de 32 bits especificada como uma operação atômica. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedDecrement16

Diminui (diminui em um) o valor da variável de 16 bits especificada como uma operação atômica.

InterlockedDecrement16Acquire

Diminui (diminui em um) o valor da variável de 16 bits especificada como uma operação atômica. A operação é executada com semântica de ordenação de memória de aquisição.

InterlockedDecrement16Release

Diminui (diminui em um) o valor da variável de 16 bits especificada como uma operação atômica. A operação é executada com semântica de ordenação de memória de versão.

InterlockedDecrement16NoFence

Diminui (diminui em um) o valor da variável de 16 bits especificada como uma operação atômica. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedDecrementNoFence64

Diminui (diminui em um) o valor da variável de 64 bits especificada como uma operação atômica. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedExchangeNoFence

Define uma variável de 64 bits para o valor especificado como uma operação atômica. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedExchange8

Define uma variável de 8 bits para o valor especificado como uma operação atômica.

InterlockedExchange16Acquire

Define uma variável de 16 bits para o valor especificado como uma operação atômica. A operação é executada usando semântica de ordenação de memória de aquisição.

InterlockedExchange16NoFence

Define uma variável de 16 bits para o valor especificado como uma operação atômica. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedExchangeNoFence64

Define uma variável de 64 bits para o valor especificado como uma operação atômica. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedExchangePointerNoFence

Troca atomicamente um par de endereços. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedExchangeAddNoFence

Executa uma adição atômica de dois valores de 32 bits. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedExchangeAddNoFence64

Executa uma adição atômica de dois valores de 64 bits. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedIncrementNoFence

Incrementa (aumenta em um) o valor da variável de 32 bits especificada como uma operação atômica. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedIncrement16

Incrementa (aumenta em um) o valor da variável de 16 bits especificada como uma operação atômica.

InterlockedIncrement16Acquire

Incrementa (aumenta em um) o valor da variável de 16 bits especificada como uma operação atômica. A operação é executada usando semântica de ordenação de memória de aquisição.

InterlockedIncrement16Release

Incrementa (aumenta em um) o valor da variável de 16 bits especificada como uma operação atômica. A operação é executada usando semântica de ordenação de memória de liberação.

InterlockedIncrement16NoFence

Incrementa (aumenta em um) o valor da variável de 16 bits especificada como uma operação atômica. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedIncrementNoFence64

Incrementa (aumenta em um) o valor da variável de 64 bits especificada como uma operação atômica. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedOrNoFence

Executa uma operação OR atômica nos valores LONG especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedOr8NoFence

Executa uma operação OR atômica nos valores char especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedOr16NoFence

Executa uma operação OR atômica nos valores SHORT especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedOr64NoFence

Executa uma operação OR atômica nos valores LONGLONG especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedPushListSListEx

Insere uma lista vinculada na frente de outra lista vinculada. O acesso às listas é sincronizado em um sistema multiprocessador. Esta versão do método não usa a convenção de chamada __fastcall .

InterlockedXorNoFence

Executa uma operação XOR atômica nos valores LONG especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedXor8NoFence

Executa uma operação XOR atômica nos valores char especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedXor16NoFence

Executa uma operação XOR atômica nos valores SHORT especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

InterlockedXor64NoFence

Executa uma operação XOR atômica nos valores LONGLONG especificados. A operação é executada atomicamente, mas sem usar barreiras de memória.

Windows 7

Novas funções

SetWaitableTimerEx

Ativa o temporizador de espera especificado e fornece informações de contexto para o temporizador.

TryAcquireSRWLockExclusive

Tenta adquirir um bloqueio srw (leitor/gravador fino) no modo exclusivo. Se a chamada for bem-sucedida, o thread de chamada assumirá a propriedade do bloqueio.

TryAcquireSRWLockShared

Tenta adquirir um bloqueio srw (leitor/gravador fino) no modo compartilhado. Se a chamada for bem-sucedida, o thread de chamada assumirá a propriedade do bloqueio.

Novas estruturas

REASON_CONTEXT

Contém informações de contexto para um temporizador ativado com SetWaitableTimerEx.