多线程的sleep和suspend问题

笨笨菜 2006-11-07 04:07:54
procedure TAthread.Execute;
begin
while not Terminated do
begin
try
//处理函数
finally
sleep(20);
self.Suspend;
end;
end;
end;
请问大家,sleep和suspend有什么区别,具体用法是什么啊,还有用了sleep还能用suspend吗,sleep里的时间是多少,怎么确定啊,在线程的处理函数里我还用到了idudpserver发送数据,用控制同步吗
...全文
266 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dd_zhouqian 2006-11-09
  • 打赏
  • 举报
回复
上面已经说得很清楚,合不合理,看你自己的意愿.要看你程序的具体要求,如果你要深究的话,最后看一下这方面的资料,关于cpu的时间片,通常是sleep(50-100)不等.
笨笨菜 2006-11-08
  • 打赏
  • 举报
回复
我记的看过一篇文章说线程的sleep是让出cpu的时间片,而线程中必须要写上sleep的,不然会一直占用cpu,程序运行会卡住,所以我想问有下,sleep要让出多少才合理
do2008 2006-11-07
  • 打赏
  • 举报
回复
>>sleep里的时间是多少,怎么确定啊

sleep的参数是以 毫秒为单位; sleep(1000);//即sleep 1秒;

>>在线程的处理函数里我还用到了idudpserver发送数据,用控制同步吗

同步与否,跟写在线程的execute中,和写在线程外面没有什么关系,是你的实现业务需求来确定的.

而且,你说的同步?还不太明白,请你说清晰一些你的情况;
do2008 2006-11-07
  • 打赏
  • 举报
回复
呵呵,我来说一下~~~

...
sleep(20);//让线程暂停20毫秒,再运行下一条语句
self.Suspend;//让线程暂停,不再运行下边代码
...

看得出来了吧.

sleep是仅仅暂停一下,然后接着运行~~~

而Suspend把线程自己停下来,不在运行了,如果想要继续运行,必须在主线程或者其它纯种中,
调用 线程.resume(); 来恢复运行;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧