比较急,向请各位求助了,关于实现微妙或者纳秒级别延迟的问题@@@@

我要在用户态的while循环里面加上微妙或者纳秒级别的延迟以让出CPU资源,试过usleep和nanosleep均不管用,延迟时间达不到精度要求,上网搜得到许多回复皆比较杂乱,不知道最为简单精确的实现的方法是什么。多谢各位了。

作者: neyshule   发布时间: 2011-03-08

你是在什么环境?X86 ? LINUX 内核什么版本?USLEEP AND NANOSLEEP 怎么不行?延迟的太多?

作者: accessory   发布时间: 2011-03-08

Linux 2.6.18 在dell的x86服务器上,usleep和nanosleep达不到我要的精度,延迟太大了。

作者: neyshule   发布时间: 2011-03-08

而且我用select(0,NULL,NUL,NULL,&tv)貌似根本不管用啊

作者: neyshule   发布时间: 2011-03-08

我觉得LZ你还是从根本上改变下方法比较好。 你的本意是用微秒或者纳秒级别是睡觉来让出CPU,提高效率,对不对?但是你让出CPU,那么就是想让其他进程切换成running 状态,然后再切换回你自己的进程。而进程切换这个过程本身也是需要一些时间的,我印象中大概也是微秒级别吧。。。反正也是比较费时间的。。。。所以如果你想用进程切换来提高效率,结果却是降低了效率。。。

我觉得你不如加个BUFFER什么的,一次多弄些数据。然后来个毫秒或者更高长时间的SLEEP。其实在USER LEVEL, 运行在普通的LINUX上, 实时性本来就不会太好。。。。

作者: accessory   发布时间: 2011-03-08