您当前的位置: 首页 >  c++

令狐掌门

暂无认证

  • 0浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++11多线程(三):atomic与atomic_flag的使用与原理分析

令狐掌门 发布时间:2020-02-21 22:11:16 ,浏览量:0

        C++11提供了线程的原子操作,这些在boost库中也有,在多个线程时原子操作保证了数据的安全性。C++11的原子操作主要是atomic和atomic_flag,使用时需要包含如下头文件:

#include
一.  atomic类的使用

         template  struct atomic , 模板类,生成一个T类型的原子对象,并提供了一些原子操作方法。

        例如用两个线程对数0加两百万次,如果不用原子操作,互斥锁等操作,那么和一定不是二百万。代码如下:

#include  
#include 
using  namespace  std;
 
int N = 0;

void  ThreadFun()
{
	for (int i = 0; i < 1000000; ++i)
	{
		++N; //线程并发导致 加操作 重叠,不是原子操作,因此肯定少于2000000
	}
}

int main()
{
	//每个线程100万次+1
	thread  t1(ThreadFun);
	thread  t2(ThreadFun);

	t1.join();
	t2.join();

	cout             
关注
打赏
1652240117
查看更多评论
0.0524s