procedure TAthread.Execute;
begin
     while not Terminated do
     begin
          try
            //处理函数
          finally
            sleep(20);
            self.Suspend;
          end;
     end;
end;
请问大家,sleep和suspend有什么区别,具体用法是什么啊,还有用了sleep还能用suspend吗,sleep里的时间是多少,怎么确定啊,在线程的处理函数里我还用到了idudpserver发送数据,用控制同步吗

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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