InterlockedCompareExchange 原子操作

LONG
  InterlockedCompareExchange(
    IN OUT PLONG  Destination,
    IN LONG  Exchange,
    IN LONG  Comparand
    );

Destination
指向一个要被比较的值,这是一个指针
Exchange
如果Destion与Comapradn相等,那么Destination的值等于此值
Comparand
与Destionation比较的值
Return Value
返回原来Desination指向的值


注:
如果Destion与Comparand相等,那么就把Destion置为Exchange,其他情况,Destination不变。反回的是原来Destation指向的值,这点一定要注意。
此函数线程安全,为原子操作,用在多线程中。
样例代码:

#include <iostream>
#include <windows.h>
int main()
{
	using std::cout;
	using std::endl;
	unsigned int des = 3;
	unsigned int a,b;
	a = 2, b = 3;
	cout << ::InterlockedCompareExchange(&des, a, b) << endl;
	cout << des << endl;
	cout << a << endl;
	cout << b << endl;
	return 0;
}
原文地址:https://www.cnblogs.com/laohaozi/p/12537730.html