标题:关于多线程的一个问题
只看楼主
邵帅
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:20
帖 子:174
专家分:505
注 册:2012-8-27
结帖率:78.26%
已结贴  问题点数:20 回复次数:8 
关于多线程的一个问题
对于同时运行的多个线程,当一个线程得到cpu时间后,除非sleep(不考虑销毁),否则其他线程是不会有机会执行的。
我在一个线程让他:sleep(5000);结果发现程序每隔5秒卡一下。。郁闷。
而如果sleep(50),就不会卡,求解释。
搜索更多相关主题的帖子: sleep 
2013-03-04 08:51
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
5000不就是相当于5秒吗

50 相当于0.05秒 估计肉眼就感觉不到了

DO IT YOURSELF !
2013-03-04 09:01
邵帅
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:20
帖 子:174
专家分:505
注 册:2012-8-27
得分:0 
回复 2楼 wp231957

首先为什么5秒的时候会卡呢?只是让这个线程交出cpu控制权5秒,不该会卡啊?

Figure out what you like. Try to become the best in the world of it.
2013-03-04 09:06
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
5秒还不卡吗  5秒是一个很长的时间概念啊

DO IT YOURSELF !
2013-03-04 09:06
邵帅
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:20
帖 子:174
专家分:505
注 册:2012-8-27
得分:0 
那应该是这个线程卡,而不是界面线程卡啊。

Figure out what you like. Try to become the best in the world of it.
2013-03-04 09:11
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
sleep 后,就会有线程切换了,卡的原因是因为你sleep的线程是UI线程.

你在非UI线程sleep就不感觉卡了.
多线程程序中,一般都是把工作的事情放多非UI线程的.这样在事件等待的时候,就不会使用户感觉卡,体验上给用户人性.
UI线程sleep 不到一秒都不会有很明显的感觉卡的.

我行我乐
我的博客:
http://blog.yuccn. net
2013-03-04 10:15
邵帅
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:20
帖 子:174
专家分:505
注 册:2012-8-27
得分:0 
回复 6楼 yuccn
UI线程就是指包含界面更新代码的线程吗?
我建了一个线程用来接收socket发来的数据,并根据数据来更新界面。

Figure out what you like. Try to become the best in the world of it.
2013-03-04 11:15
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:20 
是的 UI线程 就是指界面线程,user interface

“我建了一个线程用来接收socket发来的数据,并根据数据来更新界面。”

子线程接受和发送数据就行了,没有必要子线程来更新界面。。更新界面有UI线程做就行了
子线程接受到数据,通过消息发送给给主窗口,由ui线程来刷新窗口就行了。子线程更新窗口这个是很挫的设计,一般都不会这样设计的。不然,子线程在操作窗口,UI线程也在操作窗口,会乱的

我行我乐
我的博客:
http://blog.yuccn. net
2013-03-04 12:17
邵帅
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:20
帖 子:174
专家分:505
注 册:2012-8-27
得分:0 
回复 8楼 yuccn
说的是,多谢。

Figure out what you like. Try to become the best in the world of it.
2013-03-04 12:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-399631-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013723 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved