InterlockedExchange
Description
Perform an atomic exchange operation on dest.
Signature
void InterlockedExchange<T>( T dest, T value) where T : IAtomicable; void InterlockedExchange<T>( T dest, T value, out T original_value) where T : IAtomicable; void InterlockedExchange( uint dest, int value);
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.
value : T
The operand to the atomic operation.
original_value : T
The value of dest before the operation.
dest : uint
The value to perform the atomic operation on.
value : int
The operand to the atomic operation.
Remarks
When targeting HLSL, it is invalid to call this function with T being a floating-point type, since HLSL does not allow atomic operations on floating point types. For InterlockedAdd, consider using RWByteAddressBuffer.InterlockedAddF32 or RWByteAddressBuffer.InterlockedAddF16 instead when NVAPI is available. On SPIR-V (Vulkan), all integer and floating point types are supported. On Metal and WGSL, all floating-point types are not supported.
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.