执行结果:多次测试输出均为20000000,耗时在3.8s左右

四:atomic原子操作代码
//全局变量
atomic<int> g_num = 0;
void fun()
{
for (int i = 0; i < 10000000; i++)
{
g_num++;
}
return ;
}
int main()
{
//获取当前毫秒时间戳
typedef chrono::time_point<chrono::system_clock, chrono::milliseconds> microClock_type;
microClock_type tp1 = chrono::time_point_cast<chrono::milliseconds>(chrono::system_clock::now());
long long time1 = tp1.time_since_epoch().count();
//创建线程
thread t1(fun);
thread t2(fun);
t1.join();
t2.join();
cout << "总数:" << g_num << endl;
//获取当前毫秒时间戳
microClock_type tp2 = chrono::time_point_cast<chrono::milliseconds>(chrono::system_clock::now());
long long time2 = tp2.time_since_epoch().count();
cout << "耗时:" << time2 - time1 << "ms" << endl;
getchar();
return 1;
}
执行结果:多次测试输出均为20000000,耗时在1.3s左右

五:小结
c++11的原子类atomic相比使用加锁机制性能有2~3倍提升,对于共享变量能用原子类型的就不要再用加锁机制了。
总结










