社区
C++ 语言
帖子详情
线程睡眠多长时间比较合适
blueboy82006
2011-08-18 09:33:34
在linux下多线程编程的时候,
比如经典的读者写者模式下,
当队列为空,读线程一般要 sleep一下,再来轮询队列吧。
这时sleep多少时间比较合适呢?
有没有比较专业的做法?
谢谢
...全文
1193
17
打赏
收藏
线程睡眠多长时间比较合适
在linux下多线程编程的时候, 比如经典的读者写者模式下, 当队列为空,读线程一般要 sleep一下,再来轮询队列吧。 这时sleep多少时间比较合适呢? 有没有比较专业的做法? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
低头路过
2011-08-19
打赏
举报
回复
恩,我有看过楼上的帖子,另外在网上找了些资料,包括对linux和windows多线程的理解和解释,网址是
http://blog.csdn.net/dongguan131/article/details/6690474
理解 Thread.Sleep 函数 ,Sleep(0) 释放当前线程所剩余的时间片,让线程马上回到就绪队列而非等待队列
nickowen
2011-08-19
打赏
举报
回复
linux sleep(0)根本没提高什么效率.
在内核中就是多进程的实现.
可以考虑用schedule()来控制调度
v_table
2011-08-19
打赏
举报
回复
sleep(0),让出当前时间片就好。。
flyck
2011-08-19
打赏
举报
回复
我来学习的。。。标记一下
blueboy82006
2011-08-19
打赏
举报
回复
感觉楼上很多人都在windows平台下讨论,而我问题是 linux平台多线程,这应该是不同的吧
blueboy82006
2011-08-19
打赏
举报
回复
[Quote=引用 3 楼 yby4769250 的回复:]
如果读线程发现队列为空,直接sleep(0),sleep(0)会放弃读线程的时间片,读线程会被放回就绪队列,这个时候,操作系统会调度写线程来运行(假设你只有两个线程),写线程就能够有执行机会来往队列中填数据,当写线程的时间片用完,那么轮到读线程执行,这样,队列就不为空,sleep(0)高效,不会延时,如果你sleep(n),n>0,则导致读线程会在n秒之后才会参与CPU竞争,系统延时太厉害了
……
[/Quote]
这个在linux平台也适用??
ouen333
2011-08-19
打赏
举报
回复
23-4 是最好的.
PG
2011-08-19
打赏
举报
回复
我觉得你应该设置一个事件等待而不是实时查询。
yanran_hill
2011-08-19
打赏
举报
回复
那个,现在流行懒惰算法,所以如果队列为空,那除非是被强迫性唤醒,否则还是一直睡下去比较好
一叶之舟
2011-08-19
打赏
举报
回复
读的时候可以判断是否为空,如果为空休息时间长一些如1秒,如果不为这那就休息少了些如10毫秒为。至于具体数据多少毫秒或秒,要看你系统要求的实时性,有的一分钟也少,有的1秒也太多。
miracle222
2011-08-19
打赏
举报
回复
这个还是根据项目的具体情况,具体弄吧,应该没有 统一的方法。。。
iambic
2011-08-19
打赏
举报
回复
任务队列应该blocking的,用不着手动sleep。
skyworth98
2011-08-19
打赏
举报
回复
[Quote=引用 6 楼 peige2008 的回复:]
我觉得你应该设置一个事件等待而不是实时查询。
[/Quote]
sp............
QQ515311445
2011-08-19
打赏
举报
回复
没事就越久越好,有事看你自己了
yby4769250
2011-08-18
打赏
举报
回复
如果读线程发现队列为空,直接sleep(0),sleep(0)会放弃读线程的时间片,读线程会被放回就绪队列,这个时候,操作系统会调度写线程来运行(假设你只有两个线程),写线程就能够有执行机会来往队列中填数据,当写线程的时间片用完,那么轮到读线程执行,这样,队列就不为空,sleep(0)高效,不会延时,如果你sleep(n),n>0,则导致读线程会在n秒之后才会参与CPU竞争,系统延时太厉害了
参看我的一篇帖子
让线程sleep(0)
blueboy82006
2011-08-18
打赏
举报
回复
[Quote=引用 1 楼 babilife 的回复:]
看到过
sleep a random time : between 1 - 5 s
[/Quote]
1-5秒,这也太长了点吧?
我现在都是用nanosleep 控制睡100ms,不知道这样对线程调试有没有什么负面影响?
至善者善之敌
2011-08-18
打赏
举报
回复
看到过
sleep a random time : between 1 - 5 s
p278 - p288 乐观锁和悲观锁
p278 - p288 乐观锁和悲观锁
多
线程
学习记录(二)
线程
的
睡眠
1、
线程
睡眠
是帮助所有
线程
获得运行机会的最好方法。 2、
线程
睡眠
到期自动苏醒,并返回到可运行状态,不是运行状态。sleep()中指定的时间是
线程
不会运行的最短时间。因此,sleep()方法不能保证该
线程
睡眠
到期后就开始执行。 3、sleep()是静态方法,只能控制当前正在运行的
线程
。 /** * 一个计数器,计数到100,在每个数字之间暂停1秒,每隔10个数字输出一个字符串 * */ pu...
python3 多
线程
中使用
线程
睡眠
Python3 多
线程
中的
线程
睡眠
多
线程
是现代计算中不可或缺的一部分。它允许程序同时执行多个任务,提高了资源利用率和处理效率。然而,多
线程
编程也带来了复杂性,尤其是在资源共享和
线程
同步方面。在多
线程
编程中,
线程
睡眠
(Thread Sleep)是一个常见且有用的工具,用于控制
线程
的执行顺序和速度。本文将探讨Python3中多...
在Python多
线程
编程中使用
线程
睡眠
的技巧与注意事项
在多
线程
编程中,合理使用
线程
睡眠
可以有效地控制
线程
的执行顺序和资源分配,从而提高程序的性能和响应速度。本文将介绍在Python多
线程
编程中使用
线程
睡眠
的技巧与注意事项,帮助开发者在实际项目中更好地管理
线程
。什么是
线程
睡眠
线程
睡眠
是指使
线程
暂停执行一段时间,然后再继续执行。Python中使用 `time.sleep()` 函...
Python3 多
线程
中的
线程
睡眠
技巧
在现代编程中,多
线程
是一种重要的工具,可以帮助我们实现并发和并行处理,从而提高程序的效率。在 Python 中,通过 threading 模块,我们可以轻松地创建多
线程
程序。而在多
线程
编程中,
线程
睡眠
(Thread Sleep)是一个常用的技巧,用于控制
线程
的执行节奏。本文将介绍如何在 Python3 多
线程
中使用
线程
睡眠
...
C++ 语言
65,210
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章