Skip to content

InterlockedCompareExchangePointer

原子地将内存位置的指针大小值与比较值进行比较,如果匹配则替换为新值。无论哪种情况都返回原始值。

语法:InterlockedCompareExchangePointer( Target , NewValue , OldValueCompare ) As LongPtr

Target
必需 LongPtr。要更新的指针大小变量,按引用传递。
NewValue
必需 LongPtr。比较成功时写入Target的值。
OldValueCompare
必需 LongPtrTarget的预期当前值。

比较和交换作为一个原子操作发生。返回值是调用开始时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

另请参阅

twinBASIC及其LOGO版权为作者"韦恩"所有