InterlockedCompareExchangePointer
原子地将内存位置的指针大小值与比较值进行比较,如果匹配则替换为新值。无论哪种情况都返回原始值。
语法:InterlockedCompareExchangePointer( Target , NewValue , OldValueCompare ) As LongPtr
- Target
- 必需 LongPtr。要更新的指针大小变量,按引用传递。
- NewValue
- 必需 LongPtr。比较成功时写入Target的值。
- OldValueCompare
- 必需 LongPtr。Target的预期当前值。
比较和交换作为一个原子操作发生。返回值是调用开始时Target中的值——成功时等于OldValueCompare,失败时为其他值(此时Target保持不变)。封装了Win32的InterlockedCompareExchangePointer内联函数。
示例
vb
' Atomically claim ownership of a slot.
Dim Slot As LongPtr = 0
Dim NewObj As LongPtr = ObjPtr(New Collection)
If InterlockedCompareExchangePointer(Slot, NewObj, 0) = 0 Then
' Won the race — Slot now holds NewObj.
End If