关于SLEEP()函数的理解

lmjloavcj1 2008-04-10 03:16:03
小弟对SLEEP的函一直不是很理解。他是让整个程序停止,还是单独的过程
比如如下程序
UrlDownloadToFile(nil, pchar(1.exe), '1.exe', 0, nil);
1.exe是一个很大的程序,下载时间超过1小时
我现在在窗体上面放一个TIMER计时器,时间设置成10分钟。10分钟后执行sleep(90000).当执行sleep(90000)这一时间的时候,上面的下载函数还在下载么
...全文
132 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmjloavcj1 2008-04-11
  • 打赏
  • 举报
回复
UrlDownloadToFile(nil, pchar(1.exe), '1.exe', 0, nil);
sleep(10000)

要是上面的代码呢,执行sleep(10000)的时候,上面的下载还会不会在下载
wangxuelid 2008-04-11
  • 打赏
  • 举报
回复
dd
oosmile 2008-04-11
  • 打赏
  • 举报
回复
其实你的UrlDownloadToFile最后一个参数是callback可以判断下载是否成功的
oosmile 2008-04-11
  • 打赏
  • 举报
回复
sleep会使当前整个线程停顿下来。
如果只有一个线程的话,代表整个程序都会阻塞。
sleep只是将当前的线程挂起指定时间,在这个指定时间中当前线程得不到时间片,即系统不会分配时间给你的当前线程。当指定时间后才能获得执行时间,当前线程才能向下执行。其后的函数不受影响。
oosmile 2008-04-11
  • 打赏
  • 举报
回复
看你是几个线程的程序,当前线程就停在sleep了。等sleep完了再执行这个线程其他的东西。
UndefinedCoder 2008-04-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 lmjloavcj1 的帖子:]
小弟对SLEEP的函一直不是很理解。他是让整个程序停止,还是单独的过程
比如如下程序
UrlDownloadToFile(nil, pchar(1.exe), '1.exe', 0, nil);
1.exe是一个很大的程序,下载时间超过1小时
我现在在窗体上面放一个TIMER计时器,时间设置成10分钟。10分钟后执行sleep(90000).当执行sleep(90000)这一时间的时候,上面的下载函数还在下载么
[/Quote]
晕倒,“整个程序”不就是“进程么”。Sleep只阻塞调用线程。
genispan 2008-04-10
  • 打赏
  • 举报
回复
sleep(..)只是暂停当前代码的执行 不会影响其他程序
lyguo 2008-04-10
  • 打赏
  • 举报
回复
我现在在窗体上面放一个TIMER计时器,时间设置成10分钟。10分钟后执行sleep(90000).当执行sleep(90000)这一时间的时候,上面的下载函数还在下载么


还在下载,但你加一个TIMER 等于加了一个线程,你却又在线程中让它Sleep 有什么意义啊? 不明白.
疯狂低调 2008-04-10
  • 打赏
  • 举报
回复
同意楼上的,不过在主线程中使用sleep()不是个好的习惯,最好把sleep放在其它线程中,否则在执行sleep时主窗体中的控件更新将会停滞,界面将无法及时相应 键盘、鼠标等操作了。
pengxuan 2008-04-10
  • 打赏
  • 举报
回复
sleep(90000)只是暂时停止代码往下执行,并不影响其它正在运行的代码

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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