std::atomic 提供了原子操作。
有2个转有特化版本。
1...针对整形atomic<integral> 专适用于所有整数类型。 这些提供主要通过模板不可用的附加操作。 如operator++等
其中integral包括char ,int, long long ,unsigned char等
2...针对指针atomic<Ty *> 部分专用化适用于任何指针类型。 对指针算法的方法。
std::atomic<int> x(0);//原子对象x为int,
void func_1()
{
for (int i = 0; i < 500000; i++)
{
x+=1;//原子操作,特化函数
//x.fetch_add(1);//公共函数
}
}
int main(int argc, char *argv[])
{
auto t = std::thread(func_1);
t.detach();
auto t1 = std::thread(func_1);
t1.detach();
Sleep(1000);
cout << x << endl;
cout << "main thread" << endl;
system("pause");
return 0;
}
参考。MSDN,https://msdn.microsoft.com/zh-cn/library/hh874894(v=vs.120).aspx