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