delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
多线程的sleep和suspend问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061107160754287.html
procedure   TAthread.Execute;  
  begin  
            while   not   Terminated   do  
            begin  
                      try  
                          //处理函数  
                      finally  
                          sleep(20);  
                          self.Suspend;  
                      end;  
            end;  
  end;  
  请问大家,sleep和suspend有什么区别,具体用法是什么啊,还有用了sleep还能用suspend吗,sleep里的时间是多少,怎么确定啊,在线程的处理函数里我还用到了idudpserver发送数据,用控制同步吗

呵呵,我来说一下~~~  
   
  ...  
  sleep(20);//让线程暂停20毫秒,再运行下一条语句  
  self.Suspend;//让线程暂停,不再运行下边代码  
  ...  
   
  看得出来了吧.  
   
  sleep是仅仅暂停一下,然后接着运行~~~  
   
  而Suspend把线程自己停下来,不在运行了,如果想要继续运行,必须在主线程或者其它纯种中,  
  调用   线程.resume();   来恢复运行;  
   
 

>>sleep里的时间是多少,怎么确定啊  
   
  sleep的参数是以   毫秒为单位;     sleep(1000);//即sleep   1秒;  
   
  >>在线程的处理函数里我还用到了idudpserver发送数据,用控制同步吗  
   
  同步与否,跟写在线程的execute中,和写在线程外面没有什么关系,是你的实现业务需求来确定的.  
   
  而且,你说的同步?还不太明白,请你说清晰一些你的情况;  
 

我记的看过一篇文章说线程的sleep是让出cpu的时间片,而线程中必须要写上sleep的,不然会一直占用cpu,程序运行会卡住,所以我想问有下,sleep要让出多少才合理

上面已经说得很清楚,合不合理,看你自己的意愿.要看你程序的具体要求,如果你要深究的话,最后看一下这方面的资料,关于cpu的时间片,通常是sleep(50-100)不等.

posted on 2009-04-08 09:12 delphi2007 阅读(507) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。