M monster Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-16 #1 有人说是程序停xxx毫秒,给别的进程执行机会,可我的测试是整个系统都"停下来睡了一会儿",<br>谁也没干啥!<br>大家谈谈到底怎么回事儿!
S simbasun Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-16 #2 如果在系统进程,也就是主线程里 Sleep, 当然是整个系统都"停下来睡了一会儿"。<br>如果在子线程里sleep, 别的子线程就可以有更多的执行机会了。
S sonie Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-16 #3 不会吧,sleep只能在所在的进程或线程中生效。也就是使调用它的进程或线程等待xxxms,让就是<br>说让进程从运行置于就绪状态挂起xxxms把系统资源(cpu)让给其它进程。
M monster Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-16 #4 参数为0,线程将放弃它的剩余时间给有同样优先级的线程. 若没有其他有同样优先级的线程, 函数立即返回并继续执行.<br>大家看我的另一个问题:http://www.delphibbs.com/delphibbs/dispq.asp?lid=557674<br>我循环用sleep(0)(这可是按微软文档的要求)去等待Modem关闭端口,可是好像根本它就没给人家机会去关闭端口嘛,<br>自己还占用着所有的系统资源.
参数为0,线程将放弃它的剩余时间给有同样优先级的线程. 若没有其他有同样优先级的线程, 函数立即返回并继续执行.<br>大家看我的另一个问题:http://www.delphibbs.com/delphibbs/dispq.asp?lid=557674<br>我循环用sleep(0)(这可是按微软文档的要求)去等待Modem关闭端口,可是好像根本它就没给人家机会去关闭端口嘛,<br>自己还占用着所有的系统资源.
S sonie Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-16 #5 我知道那个贴子.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>
我知道那个贴子.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>