Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1260541
  • 博文数量: 788
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 7005
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 15:52
文章存档

2017年(81)

2011年(1)

2009年(369)

2008年(337)

分类:

2009-04-08 09:22:44



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)不等.



--------------------------
新闻:FriendFeed 正在踏进 twitter 的领域
导航:博客园首页  知识库  新闻  招聘  社区  小组  博问  网摘  找找看
阅读(909) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~