LONG InterlockedDecrement(
LONG volatile* Addend // 原子递减变量的指针
);
返回值: 变量递减后的值
LONG InterlockedIncrement(
LONG volatile* Addend // 原子递增变量的指针
);
返回值: 变量递增后的值
LONG InterlockedExchangeAdd(
LONG volatile* Addend, // 原子加法变量的指针
LONG Value // 增量
);
返回值:变量变化后的值
LONG InterlockedExchange(
LONG volatile* Target, // 原子操作变量的指针
LONG Value // 给 Target 赋值的值
);
返回值:变量变化前的值
PVOID InterlockedExchangePointer(
PVOID volatile* Target, // 二重指针,需要替换的二重指针的值
PVOID Value // 用该地址值替换 Target 中的地址
);
返回值: Target 在被替换前的地址值
LONG InterlockedCompareExchange(
LONG volatile* Destination, // 需要替换的变量地址
LONG Exchange, // 给 Destination 赋值的值
LONG Comparand // 需要比较的值,如果与 Destination 相同,则替换
);
返回值:变化前的值
PVOID InterlockedCompareExchangePointer(
PVOID volatile* Destination, // 需要替换的指针的地址
PVOID Exchange, // 给 Destination 赋值的值
PVOID Comparand // 需要比较的值,如果与 Destination 相同,则替换
);
返回值:变化前的值
位运算的原子操作
LONG InterlockedAnd(
LONG volatile* Destination, // 与 Value 做按位与运算,并保存结果
LONG Value // 与 Destination 做按位与运算的值
);
返回值:变化前的值
LONG InterlockedOr(
LONG volatile* Destination,
LONG Value
);
LONG InterlockedXor(
LONG volatile* Destination,
LONG Value
);