社区
进程/线程/DLL
帖子详情
主线程有什么好的延时方法?
一秒一次郎
2012-05-09 07:42:36
开多线程,用全局变量来记录线程数量,在主线程中用 while(true) 来判断,如果用sleep延时的话,有时候会出现未响应的情况,有没有更好一点的方法?
...全文
311
17
打赏
收藏
主线程有什么好的延时方法?
开多线程,用全局变量来记录线程数量,在主线程中用 while(true) 来判断,如果用sleep延时的话,有时候会出现未响应的情况,有没有更好一点的方法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fly4free
2012-05-10
打赏
举报
回复
不要在 CXXXDlg 的事件处理函数中 进行工作量大、占用时间长的任务。必然“未响应”。
可以放在其他线程里完成。
一秒一次郎
2012-05-10
打赏
举报
回复
谢谢各位,小弟又开了一个线程延时等待判断,就解决这个问题了,结贴
96掌门师兄
2012-05-10
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
主线程一般不建议Sleep,主要会造成消息没能及时处理,导致界面无响应
[/Quote]
+++
向立天
2012-05-10
打赏
举报
回复
主线程就不应该延时
什么和延时有关的方法都不该用
sichuanwww
2012-05-10
打赏
举报
回复
尽量不要在主线程处理。
sichuanwww
2012-05-10
打赏
举报
回复
尽量不要在主线程处理,简单一点可以标记个信号量,当无信号时不处理,并设定个定时器重置信号量。
许文君
2012-05-10
打赏
举报
回复
尽量不要在主线程处理,简单一点可以标记个信号量,当无信号时不处理,并设定个定时器重置信号量。
一秒一次郎
2012-05-10
打赏
举报
回复
[Quote=引用 9 楼 的回复:]
用一个主线程就可以干好这些事情,但是需要统筹管理工作时间,请注意下面代码里的注释:
start:
while(PeekMessage(msg, NULL, 0, 0, PM_REMOVE)){ // 攫取出消息
if(msg->message == WM_QUIT) // 如果是quit消息,则结束操作
goto end;
DispatchMessage(msg)……
[/Quote]
谢谢分享,另求更多方法
「已注销」
2012-05-09
打赏
举报
回复
用一个主线程就可以干好这些事情,但是需要统筹管理工作时间,请注意下面代码里的注释:
start:
while(PeekMessage(msg, NULL, 0, 0, PM_REMOVE)){ // 攫取出消息
if(msg->message == WM_QUIT) // 如果是quit消息,则结束操作
goto end;
DispatchMessage(msg); // 分发攫取到的消息
}
// 如果程序运行到这里,说明消息队列里的消息都被分发,现在处于空闲(Idle)状态。
// 现在可以做你的工作,但是,不要长时间工作,必须将工作分成小片小片的,每次做一片。
do_your_job_piece();
// 下面要getmessage,阻塞等待消息,如果没有这个函数,CPU占用率会达到100%
if(!GetMessage(msg, NULL, 0, 0))
goto end;
DispatchMessage(msg); // 分发
goto start; // 重复这个过程
end: 结束
代码是我随手写的,存在问题,比如,处理键盘(浏览键)消息,但大致就是这个意思。
一秒一次郎
2012-05-09
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
线程退出时候发消息给主线程,不需要主线程进行监视
[/Quote]
能给出稍微具体一点的步骤吗
一秒一次郎
2012-05-09
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
主线程一般不建议Sleep,主要会造成消息没能及时处理,导致界面无响应
[/Quote]
那有什么好方法呢?
cczlp
2012-05-09
打赏
举报
回复
线程退出时候发消息给主线程,不需要主线程进行监视
Eleven
2012-05-09
打赏
举报
回复
主线程一般不建议Sleep,主要会造成消息没能及时处理,导致界面无响应
小马喝水
2012-05-09
打赏
举报
回复
sleep会放出CPU,不会导致 占用大量CPU
不想用sleep的话,可以用WaitForSingleObject(event,100)来等待一个未激活的事件
一秒一次郎
2012-05-09
打赏
举报
回复
另外,现在网络盛传的sleep 占用大量CPU是否为真,小菜同问
一秒一次郎
2012-05-09
打赏
举报
回复
骚逮撕奶,另问还有别的方法吗?
superhanxin5
2012-05-09
打赏
举报
回复
为什么要在主线程当中??你这样做必然的啊
开个线程,然后通过这个线程替代你现在让主线程干的事
c#
主
线程
不卡
延时
函数
平时我们在做winform开发的时候,有时候需要让程序休眠几秒钟,但是,如果我们直接使用 thread.sleep()函数,页面ui就会停止响应。怎么样解决呢,你可以把页面涉及到表现ui的代码放到一个单
线程
处理,也可以采用我...
Android
主
线程
中
延时
处理
Android对UI
主
线程
开启了实时监听,Activity Manager和WindowManager系统服务一旦监听到
主
线程
超过10秒没有响应操作,就会...当有必要在
主
线程
中增加
延时
处理时,可以通过开启子
线程
的
方法
:new Thread(new Runnable(){
CSRF跨站请求伪造漏洞原理及代码审计
课程声明:该课程是教学使用,视频内涉及漏洞利用
方法
,请勿在互联网环境中使用;维护互联网网络安全,人人有责... 如果有以上困惑赶紧学习吧,Margin老师工作日一般都是30分钟就能为你解答疑惑,沟通无
延时
、无障碍。
QT编程之定时器或者程序中进行
延时
,不阻塞
主
线程
解决办法
QT
延时
阻塞解决办法1、阻塞
主
线程
2、不阻塞
主
线程
1、阻塞
主
线程
最简单的
延时
方法
就是使用QThread类的sleep(n)、msleep(n)、usleep(n) QThread::msleep(50);//阻塞
延时
50ms 2、不阻塞
主
线程
void Delay_MSec...
“Handler中有Loop死循环,为什么没有阻塞
主
线程
,原理是什么?”
前言 Android的消息机制
主
要是指Handler的运行机制,对于大家来说Handler已经是轻车熟路了,可是真的掌握了Handler?本文
主
要通过几个问题围绕着Handler展开深入...
主
线程
的消息循环机制是什么(死循环如何处理其它事
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章