分享

延迟函数 比sleep效果好

 quasiceo 2014-08-13

延迟函数 比sleep效果好

作者: BccSafe 分类: Code[Delphi] 发布时间: 2013-08-06 13:12 ? 62条评论

sleep是会阻塞线程的

网上有些延迟函数测试下来还是会阻塞,而接下来推荐的代码则不会

 

1
2
3
4
5
6
7
8
9
procedure delay(dwMilliseconds:integer);
var
  firsttickcount: longint;
begin
  firsttickcount := gettickcount;
  repeat
    application.processmessages;
  until ((gettickcount - firsttickcount) >= longint(dwMilliseconds));
end;

 

 

 

感谢 醉倚黄昏 的提醒,上述代码在连续开机很长一段时间后将会失效,大概是24天左右

服务器可能会受影响,个人PC不用考虑

本文出自 BccSafe's Blog,转载时请注明出处及相应链接。

本文永久链接: http://www./?p=294

2条评论

  1. 醉倚黄昏 2013 年 8 月 7 日 下午 2:03 回复

    用gettickcount计时有限制啊,精度一般大于10ms,而且,系统启动时间过长获取到的值会归零,貌似。

    1. BccSafe 2013 年 8 月 8 日 下午 3:28 回复

      delphi中规定longint上限为2147483647,因为单位是毫秒,换算下是24.8天,所以基本不用担心,极端的不考虑
      至于精度也不需要考虑,就算延迟1秒也不在乎那10几毫秒的精度
      归零的问题我百度了下,是连续开机大约49天以后才会(不考虑极端)

      - -这些细节的确是我没注意到,在服务器上运行这些代码可能会出现问题
      另外,之所以说比sleep好,是因为不堵塞进程,这个才是这篇文章的意义所在。

发表评论

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多