InterlockedCompareExchange

Description

Perform an atomic compare and exchange operation on dest.

Signature

void InterlockedCompareExchange<T>(
    T dest,
    T compare_value,
    T value,
    out T original_value)
    where T : IAtomicable;

Generic Parameters

T: IAtomicable

The type of the value to perform the atomic operation on.

Parameters

dest : T

The value to perform the atomic operation on.

compare_value : T

The value to compare dest with.

value : T

The value to store into dest if the compare result is equal.

original_value : T

The value of dest before the operation.

Remarks

When targeting HLSL, a call to this function with T being float will translate to a call to InterlockedCompareExchangeFloatBitwise, which means the comparison is done as a bitwise comparison.

On SPIR-V (Vulkan), this function maps to OpAtomicCompareExchange.

On Metal and WGSL, all floating-point types are not supported.

On CUDA, this function maps to atomicCAS.

Availability and Requirements

Defined for the following targets:

hlsl

Available in all stages.

glsl

Available in all stages.

cuda

Available in all stages.

metal

Available in all stages.

spirv

Available in all stages.