T tinytao Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-05 #21 线程?都给微软骗了,线程就是死循环(个人意见); 加sleep吧。
N netbit Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-05 #22 to tinytao //使劲握手 ,同志你真是太了解了,俺同意你, hehe
M maming Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-13 #23 高手们:我想实现这样一个东东: form1: procedure form1.connectdatabase; begin //form2.show; //在form2显示时创建线程, //也就是form1不能死要活的, //而form2中的socketconnect在联接数据服务器。 if form2.connected then ... end; 能做到吗? 我写的程序中form1总是死的当然form2是活的。
高手们:我想实现这样一个东东: form1: procedure form1.connectdatabase; begin //form2.show; //在form2显示时创建线程, //也就是form1不能死要活的, //而form2中的socketconnect在联接数据服务器。 if form2.connected then ... end; 能做到吗? 我写的程序中form1总是死的当然form2是活的。
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-21 #24 支持huanGe用WaitForSingleObject,用ProcessMessages也可以; 用Sleep要小心:在线程内部用来做空闲等待(相当于降低线程灵敏度)是可以的, 用来等待信号状态则可能死锁,看你怎么用。 线程起来会占用99%的CPU时间:要看你的线程的优先级和任务是否繁忙。你一直让 线程做运算,又没有其它线程跟它抢时间,所以会用掉全部CPU。 真是的,我怎么好像是在重复别人说的话呢?
支持huanGe用WaitForSingleObject,用ProcessMessages也可以; 用Sleep要小心:在线程内部用来做空闲等待(相当于降低线程灵敏度)是可以的, 用来等待信号状态则可能死锁,看你怎么用。 线程起来会占用99%的CPU时间:要看你的线程的优先级和任务是否繁忙。你一直让 线程做运算,又没有其它线程跟它抢时间,所以会用掉全部CPU。 真是的,我怎么好像是在重复别人说的话呢?
H hopfield Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-21 #25 怎么大家对Sleep都没什么好感? WaitForSingleObject主要是用来防止线程间公用资源的访问冲突的,和CPU占用率 有关系吗? ProcessMessages更是不着边际了,你看看下面的语句CPU会占到多少: While truedo Application.ProcessMessage;
怎么大家对Sleep都没什么好感? WaitForSingleObject主要是用来防止线程间公用资源的访问冲突的,和CPU占用率 有关系吗? ProcessMessages更是不着边际了,你看看下面的语句CPU会占到多少: While truedo Application.ProcessMessage;
H hopfield Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-21 #27 再说两句,像下面的线程,还能叫多线程吗? while not terminateddo begin WaitForSingleObject(hVar, INFINITE); end
C Campo Unregistered / Unconfirmed GUEST, unregistred user! 2001-07-05 #28 我赞同楼上楼上老兄所说。 Sleep一样可以减少对CPU的占用。
S scorpions Unregistered / Unconfirmed GUEST, unregistred user! 2001-07-05 #29 我一直用sleep,不知还有什么更好的方法?
N netspur Unregistered / Unconfirmed GUEST, unregistred user! 2001-07-07 #30 做过一个实验: 开100个线程,执行一下代码: procedure mythread.Execute; var i:integer; begin i:=0; while truedo begin i:=i+1; sleep(10); if i>1000 then break; end; end; 发觉如果改为sleep(3)的话,会占用更多的CPU,这是不是说, sleep本身不怎么占用资源,而是他的频繁切换占用了大量的资源呢?
做过一个实验: 开100个线程,执行一下代码: procedure mythread.Execute; var i:integer; begin i:=0; while truedo begin i:=i+1; sleep(10); if i>1000 then break; end; end; 发觉如果改为sleep(3)的话,会占用更多的CPU,这是不是说, sleep本身不怎么占用资源,而是他的频繁切换占用了大量的资源呢?
C Campo Unregistered / Unconfirmed GUEST, unregistred user! 2001-07-11 #31 我想不是这样吧,sleep(3)才等待3毫秒,其他时间都是不断的进行计算, 当然很占用CPU了。
Z zjlcc Unregistered / Unconfirmed GUEST, unregistred user! 2001-07-11 #32 各位错了吧?我向来在线程里面作等待和循环,当然这样的线程不能太多 也就消耗30-40%的CPU时间呀,象sleep,我绝对不会用的,太浪费了