并发,std::atomic
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