Dict.CN 在线词典, 英语学习, 在线翻译

学海苦作舟,书山勤为径

留下点回忆

常用链接

统计

积分与排名

Denoise

English study

Web技术

数据压缩

一些连接

最新评论

usleep不可用

使用usleep来暂停一会。
一般用于线程循环的时候切换当前线程,让出CPU给其它线程,不会导致死锁也能充分利用CPU。
但在高性能程序中,usleep不可用,其会让你的线程在不必要的时候被切换出去。最明显的例子是做网络数据接收。
如果你的程序在收数据等到一个pending的时候退出接收等待下个事件,如果这个时候你使用usleep,那么线程就可能被切换出去10ms,导致你本来应该及时处理的数据没有及时处理而导致程序的吞吐量降低。
这个时候使用epoll或select来替换。

所以usleep使用的时候一定要注意;另外最好用nanosleep来替换。

posted on 2012-01-18 11:19 笨笨 阅读(2739) 评论(3)  编辑 收藏 引用 所属分类: NetworkLinux

评论

# re: usleep不可用[未登录] 2012-01-19 13:48 coder

好像沒有人接收網絡數據會使用usleep的  回复  更多评论   

# re: usleep不可用 2012-01-19 15:07 笨笨

@coder
你们那里都是高手,我是菜鸟。  回复  更多评论   

# re: usleep不可用 2012-02-02 18:32 lcnight

这个不尽然吧,只要sleep都会切换线程的,在单核情况下sleep反而会好点。多核的时候用spinlock吧  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理