Função InterlockedExchangeAdd64 (winnt.h)

Executa uma adição atômica de dois valores de 64 bits.

Para operar em valores de 32 bits, use a função InterlockedExchangeAdd .

Sintaxe

LONG64 InterlockedExchangeAdd64(
  [in, out] LONG64 volatile *Addend,
  [in]      LONG64          Value
);

Parâmetros

[in, out] Addend

Um ponteiro para uma variável. O valor dessa variável será substituído pelo resultado da operação.

[in] Value

O valor a ser adicionado à variável apontada pelo parâmetro Addend .

Retornar valor

A função retorna o valor inicial do parâmetro Addend .

Comentários

A função executa uma adição atômica de Value ao valor apontado por Addend. O resultado é armazenado no endereço especificado por Addend. A função retorna o valor inicial da variável apontada por Addend.

As variáveis para essa função devem ser alinhadas em um limite de 64 bits; caso contrário, essa função se comportará de forma imprevisível em sistemas x86 multiprocessadores e em sistemas não x86. Confira _aligned_malloc.

As funções interligadas fornecem um mecanismo simples para sincronizar o acesso a uma variável que é compartilhada por vários threads. Essa função é atômica em relação a chamadas para outras funções interligadas.

Essa função é implementada usando um compilador intrínseco sempre que possível. Para obter mais informações, consulte o arquivo de cabeçalho WinBase.h e _InterlockedExchangeAdd64.

Essa função gera uma barreira de memória completa (ou limite) para garantir que as operações de memória sejam concluídas em ordem.

Sistemas baseados em Itanium: Para aplicativos críticos ao desempenho, use InterlockedExchangeAddAcquire64 .

Nota Essa função tem suporte em sistemas baseados em Windows RT.
 

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho winnt.h (inclua Windows.h)

Confira também

Acesso a variáveis interligadas

Interlockedcompareexchange

InterlockedExchange

Interlockedexchangeadd

InterlockedExchangeAddAcquire

InterlockedExchangeAddAcquire64

InterlockedExchangeAddNoFence

InterlockedExchangeAddNoFence64

InterlockedExchangeAddRelease

InterlockedExchangeAddRelease64

InterlockedExchangeSubtract

Funções de sincronização