Chinaunix首页 | 论坛 | 博客
  • 博客访问: 508463
  • 博文数量: 118
  • 博客积分: 2575
  • 博客等级: 大尉
  • 技术积分: 1263
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-27 09:37
文章分类

全部博文(118)

文章存档

2017年(11)

2016年(8)

2015年(1)

2014年(9)

2013年(7)

2012年(38)

2011年(14)

2010年(18)

2009年(12)

分类: LINUX

2016-12-15 10:31:34

内核中有时免除不了busy, 一种是

  1. while (my_variable != what_i_want)
  2.       ;
另外一种是

  1. while (my_variable != what_i_want)
  2.   msleep(0)
还有一种是

  1. while (my_variable != what_i_want)
  2.   cpu_relax()
第一种由于忙占cpu,所以千万不要那么写,会导致CPU占用率奇高,而且,由于没有barrier,有时候优化会导致代码根本停下下来,有时不得不救助于volatile;第二种对于cpu的占用率有一些帮助,但是也有前面barrier与优化的问题。理论上讲,第三种最好,是kernel建议的做法,cpu_relax除了让出cpu外,还可以作为compiler barrier。


阅读(1986) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~