Función InterlockedCompareExchange
Compara la entrada con el valor de comparación e intercambia el resultado de forma atómica.
Sintaxis
void InterlockedCompareExchange(
in UINT dest,
in UINT compare_value,
in UINT value,
out UINT original_value
);
Parámetros
-
dest [in]
-
Tipo: UINT
Dirección de destino.
-
compare_value [in]
-
Tipo: UINT
Valor de comparación.
-
value [in]
-
Tipo: UINT
Valor de entrada.
-
original_value [out]
-
Tipo: UINT
El valor original.
Valor devuelto
Esta función no devuelve ningún valor.
Observaciones
Compara de forma atómica el valor dest a compare_value, almacena el valor en dest si los valores coinciden, devuelve el valor original dest en original_value. Esta operación solo se puede realizar en recursos con tipo int o uint y en variables de memoria compartidas. Hay tres posibles usos para esta función. La primera es cuando R es un tipo de variable de memoria compartida. En este caso, la función realiza la operación en el registro de memoria compartida al que hace referencia dest. El segundo escenario es cuando R es un tipo de variable de recurso. En este escenario, la función realiza la operación en la ubicación del recurso a la que hace referencia dest. Por último, el tercer escenario es cuando R es un tipo de variable local. En este escenario, la función se reduce a la operación realizada mediante operaciones locales. Esta operación solo está disponible cuando R es legible y grabable.
Nota
Si llama a InterlockedCompareExchange en un bucle for o while compute shader, para compilar correctamente, debe usar el atributo [allow_uav_condition] en ese bucle.
Esta función se admite en los siguientes tipos de sombreadores:
VS | HS | DS | GS | PS | CS |
---|---|---|---|---|---|
x | x | x | x | x | x |
Consulte también