Sleep(xxx)到底是起什么作用的?(200分)

  • 主题发起人 主题发起人 monster
  • 开始时间 开始时间
M

monster

Unregistered / Unconfirmed
GUEST, unregistred user!
有人说是程序停xxx毫秒,给别的进程执行机会,可我的测试是整个系统都"停下来睡了一会儿",<br>谁也没干啥!<br>大家谈谈到底怎么回事儿!
 
如果在系统进程,也就是主线程里 Sleep, 当然是整个系统都"停下来睡了一会儿"。<br>如果在子线程里sleep, 别的子线程就可以有更多的执行机会了。
 
不会吧,sleep只能在所在的进程或线程中生效。也就是使调用它的进程或线程等待xxxms,让就是<br>说让进程从运行置于就绪状态挂起xxxms把系统资源(cpu)让给其它进程。
 
参数为0,线程将放弃它的剩余时间给有同样优先级的线程. 若没有其他有同样优先级的线程, 函数立即返回并继续执行.<br>大家看我的另一个问题:http://www.delphibbs.com/delphibbs/dispq.asp?lid=557674<br>我循环用sleep(0)(这可是按微软文档的要求)去等待Modem关闭端口,可是好像根本它就没给人家机会去关闭端口嘛,<br>自己还占用着所有的系统资源.
 
我知道那个贴子.sleep(0)是什么事情也不做,那里的意思就是空一条语句。<br>你的不响应是因为while是个死循环,你过一阵按ctrl+del+alt,你的进程应该是不响应。<br>但并不是由于sleep(0)的原因,相反你如果改成sleep(3000)正好跟ms说的最简单的方法一样了。<br><br>而且你说在你的那段代码中用sleep来等人来关闭端口,这种说法我认为是不太准确的,你一进while只是不停来检测端口<br>是否已经释放,此时关闭端口的指令已经完成。也就是说这里的只不过是用while来实时检测端口,延时很小,而不是sleep<br>一个指定长时间来保证端口已经释放。<br><br>也许你试着把代码改成sleep(10)或其它的效果会好一点。<br><br><br>faint,我现在才看到你把Application.ProcessMessages注释了,这句注释不得<br>&nbsp; &nbsp;
 
给别人点干活的机会
 
sonie说的有理
 
谢谢各位捧场!
 
后退
顶部