Partilhar via


O que há de novo na sincronização

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

Windows 8

Novas funções

EliminarBarreiraDeSincronização

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ção 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 encadeamentos e a contagem de iterações para uma nova barreira de sincronização.

EsperarNoEndereço

Aguarda que o valor no endereço especificado seja alterado.

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 interligadas

InterlockedAddNoFence

Executa uma operação de adição atômica nos valores especificados LONG. A operação é realizada 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 é realizada atomicamente, mas sem usar barreiras de memória.

InterligadoESemCerca

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

InterlockedAnd8NoFence

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

InterlockedAnd16NoFence

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

InterlockedAnd64NoFence

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

InterlockedBitTestAndComplement64

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

InterlockedBitTestAndResetAcquire

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

InterlockedBitTestAndResetRelease

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

InterlockedBitTestAndSetAcquire

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

InterlockedBitTestAndSetRelease

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

InterlockedCompareExchangeNoFence

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

InterlockedCompareExchange16

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

InterlockedCompareExchange16Acquire

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

InterlockedCompareExchange16Release

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

InterlockedCompareExchange16NoFence

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

InterlockedCompareExchangeNoFence64

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

InterlockedCompareExchange128

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

InterlockedCompareExchangePointerNoFence

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

InterlockedDecrementNoFence

Decrementa (diminui uma unidade) o valor da variável de 32 bits especificada de forma atómica. A operação é realizada atomicamente, mas sem usar barreiras de memória.

InterlockedDecrement16

Decrementa o valor da variável de 16 bits especificada como uma operação atômica.

InterlockedDecrement16Adquira

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

InterlockedDecrement16Release

Decrementa 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 liberação.

InterlockedDecrement16NoFence

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

InterlockedDecrementNoFence64

Decrementa (diminui em uma unidade) o valor da variável de 64 bits especificada como uma operação atômica. A operação é realizada 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 é realizada 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.

InterlockedExchange16Adquira

Define uma variável de 16 bits para o valor especificado como uma operação atômica. A operação é realizada usando a 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 é realizada 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 é realizada atomicamente, mas sem usar barreiras de memória.

InterlockedExchangePointerNoFence

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

InterlockedExchangeAddNoFence

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

InterlockedExchangeAddNoFence64

Executa uma adição atômica de dois valores de 64 bits. A operação é realizada 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 é realizada 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.

InterlockedIncrement16Adquirir

Incrementa (aumenta em um) o valor da variável de 16 bits especificada como uma operação atômica. A operação é realizada usando a 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 a 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 é realizada 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 é realizada atomicamente, mas sem usar barreiras de memória.

InterlockedOrNoFence

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

InterlockedOr8NoFence

Executa uma operação OR atómica sobre os valores de caractere especificados de. A operação é realizada atomicamente, mas sem usar barreiras de memória.

InterlockedOr16NoFence

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

InterlockedOr64NoFence

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

InterlockedPushListSListEx

Insere uma lista vinculada individualmente na frente de outra lista vinculada individualmente. 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 especificados LONG. A operação é realizada atomicamente, mas sem usar barreiras de memória.

InterlockedXor8NoFence

Executa uma operação XOR atómica nos valores de caracteres especificados por e. A operação é realizada atomicamente, mas sem usar barreiras de memória.

InterlockedXor16NoFence

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

InterlockedXor64NoFence

Executa uma operação XOR atómica nos valores LONGLONG especificados. A operação é realizada 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 fino de leitor/gravador (SRW) no modo exclusivo. Se a chamada for bem-sucedida, o thread de chamada assume a propriedade do bloqueio.

TryAcquireSRWLockShared

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

Novas Estruturas

REASON_CONTEXT

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