LONG InterlockedExchangeAdd(
LONG volatile* Addend,
LONG Value
);
LONGLONG InterlockedExchangeAdd64(
LONGLONG volatile* Addend,
LONGLONG Value
);
上面两个函数:
参数Addend 为要递增或者递减的变量的地址
参数Value
为增量值,可以为负数,表示前一个变量参数递减。
LONG InterlockedExchange(
LONG volatile* Target,
LONG Value
);
LONGLONG InterlockedExchange64(
LONGLONG volatile* Target,
LONGLONG Value
);
PVOID InterlockedExchangePointer(
PVOID volatile* Target,
PVOID Value
);
上面三个函数会把第一个参数指向的内存地址的当前值,以原子的方式替换为第二个参数指定的值。
LONG InterlockedCompareExchange(
LONG volatile* Destination,
LONG Exchange,
LONG Comparand
);
PVOID InterlockedCompareExchangePointer(
PVOID volatile* Destination,
PVOID Exchange,
PVOID Comparand
);
上面这两个函数以原子的方式执行一个测试和设置操作。
函数会将参数Destination
指向的当前值与参数Comparand
的值进行比较。如果两个值相同,那么函数会将 *Destination 修改为Exchange 参数的值。否则,*Destination的值保持不变。函数会返回
*Destination 原来的值。