首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++从增操作与原子性

2013-10-22 
C++自增操作与原子性int自增操作到底是不是原子性?验证了下答案是否定的,当多线程遇到简单的自增操作时会

C++自增操作与原子性

int自增操作到底是不是原子性?验证了下答案是否定的,当多线程遇到简单的自增操作时会出现问题,比如开启很多个线程同时对一个int自增后结果会随着系统负载出现不同的结果。

代码验证:


在我的机子上很荣幸看到了次执行结果不对的情形,红色框说明简单的自增操作不是线程安全的。

那么如何做到线程安全的呢?

          首先想到的就是采用互斥量,类中添加互斥量作为成员可以保护类的其它成员,此法可行,可发扬光大。但是注意的时互斥量不能保护这个对象,即会出现析构竞态,扯远了....

          第二个:对于这个问题可以用atomic_t变量,采用atomic_系列函数操作atomic_t是原子操作(要么不做要么一步做完)

热点排行