Função InterlockedCompareExchange
Compara a entrada com o valor de comparação e troca o resultado atomicamente.
Sintaxe
void InterlockedCompareExchange(
in UINT dest,
in UINT compare_value,
in UINT value,
out UINT original_value
);
Parâmetros
-
dest [in]
-
Tipo: UINT
O endereço de destino.
-
compare_value [in]
-
Tipo: UINT
O valor de comparação.
-
value [in]
-
Tipo: UINT
O valor de entrada.
-
original_value [out]
-
Tipo: UINT
O valor original.
Retornar valor
Essa função não retorna um valor.
Comentários
Compara atomicamente o valor em dest com compare_value, armazena o valor em dest se os valores corresponderem, retorna o valor original de dest em original_value. Essa operação só pode ser executada em recursos digitados int ou uint e variáveis de memória compartilhada. Há três usos possíveis para essa função. A primeira é quando R é um tipo de variável de memória compartilhada. Nesse caso, a função executa a operação no registro de memória compartilhada referenciado por dest. O segundo cenário é quando R é um tipo de variável de recurso. Nesse cenário, a função executa a operação no local do recurso referenciado por dest. Por fim, o terceiro cenário é quando R é um tipo de variável local. Nesse cenário, a função reduz para a operação executada usando operações locais. Essa operação só está disponível quando o R é legível e gravável.
Observação
Se você chamar InterlockedCompareExchange em um loop de sombreador de computação para ou para compilar corretamente, deverá usar o atributo [allow_uav_condition] nesse loop.
Essa função tem suporte nos seguintes tipos de sombreadores:
VS | HS | DS | GS | PS | CS |
---|---|---|---|---|---|
x | x | x | x | x | x |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de