Função InterlockedExchangeAdd (winnt.h)
Executa uma adição atômica de dois valores de 32 bits.
Para operar com valores de 64 bits, use a função InterlockedExchangeAdd64.
Sintaxe
LONG InterlockedExchangeAdd(
[in, out] LONG volatile *Addend,
[in] LONG 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 de
Valor de retorno
A função retorna o valor inicial do parâmetro Addend.
Observações
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 32 bits; caso contrário, essa função se comportará de forma imprevisível em sistemas x86 multiprocessadores e em qualquer sistema que não seja x86. Consulte _aligned_malloc.
As funções intertravadas fornecem um mecanismo simples para sincronizar o acesso a uma variável compartilhada por vários threads. Essa função é atômica em relação a chamadas para outras funções intertravadas.
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 _InterlockedExchangeAdd
Essa função gera uma barreira de memória completa (ou cerca) 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 InterlockedExchangeAddAcquire.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [aplicativos da área de trabalho | Aplicativos UWP] |
servidor com suporte mínimo | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
da Plataforma de Destino |
Windows |
cabeçalho | winnt.h (inclua Windows.h) |
biblioteca | Kernel32.lib |
de DLL |
Kernel32.dll |
Consulte também
de acesso de variável intertravada
"> InterlockedExchangeAddAcquire64
InterlockedExchangeAddNoFence64
<a href="/previous-versions/windows/desktop/legacy/ms683605(v=vs.85)". InterlockedExchangeAddRelease