Linux上的线程sleep时间有关问题
Linux上的线程sleep时间问题
原文作者:@玄冬Wong
windows上的sleep最小间隔可以精确到1ms,但是linux上sleep函数需要注意几个地方:
1,usleep(int microseconds)是旧式API,虽然参数是微妙,但是在linux系统上如果间隔低于10毫秒,死循环的CPU占用率仍然很高,如果要用usleep,间隔最小值必须设置为10ms,10000微妙。windows上不存在这种问题,只要sleep的间隔有1ms,死循环CPU占用率很低。
2,kernel 2.0之后才提供了一个新版API:nanosleep(int microseconds),这个API才可以将间隔时间控制在微秒级。
参考:
High-resolution timing
http://tldp.org/HOWTO/IO-Port-Programming-4.html