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

猜你喜欢

转载自aigo.iteye.com/blog/2289930