延迟函数 比sleep效果好

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;

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

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

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

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

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

http://www.bccsafe.com/

时间: 2024-10-12 23:24:53

延迟函数 比sleep效果好的相关文章

Jquery延迟函数

1.setInterval(function(){},[time]) 示例:这是一个模拟进度条的代码,结束后转向另一页面. <script type="text/javascript"> $(function () { var i = 0; var t = 0; setInterval(function () { if (i < 100) { i = i + 5; t++; $("#linepercent").css("height&qu

go defer (go延迟函数)

go defer (go延迟函数) Go语言的defer算是一个语言的新特性,至少对比当今主流编程语言如此.根据GO LANGUAGE SPEC的说法: A "defer" statement invokes a function whose execution is deferred to the moment the surrounding function returns, either because the surrounding function executed a re

Golang入门教程(十三)延迟函数defer详解

前言 大家都知道go语言的defer功能很强大,对于资源管理非常方便,但是如果没用好,也会有陷阱哦.Go 语言中延迟函数 defer 充当着 try...catch 的重任,使用起来也非常简便,然而在实际应用中,很多 gopher 并没有真正搞明白 defer.return.返回值.panic 之间的执行顺序,从而掉进坑中,今天我们就来揭开它的神秘面纱!话不多说了,来一起看看详细的介绍吧. 基本介绍 延时调用函数的语法如下: defer func_name(param-list) 当一个函数调用

go 延迟函数 defer

defer 语句用于延迟调用指定的函数比如: func outerFunc() { defer fmt.Println("defer 执行") fmt.Println("第一个被打印") } defer 语句最后才会被执行 func printNumbers() { for i :=0 ; i < 5; i++ { defer func() { fmt.Println(i) }() } } 会打印55555延迟函数执行时i已经=5了 func printNum

用Easing函数实现碰撞效果

工程中需要的源码请从这里下载: https://github.com/YouXianMing/EasingAnimation 源码: // // ViewController.m // EasingView // // Created by YouXianMing on 15/1/17. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import "ViewController.h" #import "

闭包应用之延迟函数setTimeout

根据HTML 5标准,setTimeout推迟执行的时间,最少是5毫秒.如果小于这个值,会被自动增加到5ms. 每一个setTimeout在执行时,会返回一个唯一ID,把该ID保存在一个变量中,并传入clearTimeout,可以清除定时器. 在setTimeout内部,this绑定采用默认绑定规则,也就是说,在非严格模式下,this会指向window:而在严格模式下,this指向undefined. 一.用setTimeout代替setInterval 由于setInterval间歇调用定时器

golang函数指针的效果

package main import ( "fmt" ) func fun1(key string) { fmt.Printf("fun11 key=%s\n", key) } func fun2(key string) { fmt.Printf("fun22222222222 key=%s\n", key) } var funVar func(key string) func main() { funVar = fun1 funVar(&qu

unity3D延迟函数

1.Invoke(string methodName,float time) 在一定时间调用methodName函数 using UnityEngine; using System.Collections; public class example : MonoBehaviour { 函数 public void Awake() { Invoke("函数名",时间); } } 2.InvokeRepeating(string methodName,float time,float re

延迟函数

var delayFn={ flag:+new Date().getTime(), mt:null, set:function(fn,delaytime){ var self=this, now=+new Date().getTime(), fc=now-self.flag; (fc>delaytime)&&(clearTimeout(self.mt),self.mt=window.setTimeout(function(){fn.call(null)},500),self.flag