原子性操作函数

举报
liuzhen007 发表于 2021/05/28 06:01:55 2021/05/28
【摘要】 如果对一个变量进行自加自减操作,一般这样写: int global_count = 0;global_count ++; 如果是多线程操作,一般都需要加锁处理: pthread_mutex_t count_lock = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_lock(&count_lock);global_count +...

如果对一个变量进行自加自减操作,一般这样写:


  
  1. int global_count = 0;
  2. global_count ++;

如果是多线程操作,一般都需要加锁处理:


  
  1. pthread_mutex_t count_lock = PTHREAD_MUTEX_INITIALIZER;
  2. pthread_mutex_lock(&count_lock);
  3. global_count ++;
  4. pthread_mutex_unlock(&count_lock);

其实,还有更好的方法,使用原子性操作函数:

__sync_fetch_and_add(&global_count, 1);
 

使用原子性操作函数的优势,不仅线程安全,而且也十分省时。

文章来源: liuzhen.blog.csdn.net,作者:Data-Mining,版权归原作者所有,如需转载,请联系作者。

原文链接:liuzhen.blog.csdn.net/article/details/90113921

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。