`
小娘子_别跑啊
  • 浏览: 5164 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

单线程与计时器

 
阅读更多
[转]http://m18659257646.blog.163.com/blog/static/237824031201482913814505/
计时器:
setTimeout(conFun, 2000); 
隔XXX毫秒后执行一次
setInterval(conFun, 1000);
每隔XXX毫秒后执行一次

timer = setInterval(function(){sport(attri);}, 50);
timer = setInterval("sport(attri)", 50);
timer = setInterval(sport, 50);
timer = setInterval(sport(attri), 50); 
只执行一次,计时器不起作用了。

计时器清除:
timer = setTimeout(conFun, 2000);   
clearTimeout(timer);

timer = setInterval(conFun, 1000);   
clearInterval(timer);

单线程:
就是说同一时间只能做一件事,在单线程里设置计时器,运行代码时,仅仅是把计时器的代码添加到了运行队列等待执行,而不是执行代码,执行的时间有可能是延后,或者提前.

setInterval的引擎处理:
当队列中没有该定时器的其它代码实例时,才能将新的定时器代码添加到队列中.
由于线程的原因,可能会造成的问题:
1、某些间隔会被跳过
2、多个定时器的代码执行之间的间隔可能会比预期的小

JS的引擎是单线程,强制所有的异步事件排队等待执行.
setTimeout 和setInterval在执行异步代码的时候存在根本的不同:
如果一个计时器被阻塞而不能立即执行,那么它将延迟执行,直到下一次执行的时间点才被执行(即比期望的时间间隔要长);
如果setInterval中的回调函数的执行时间足够长,比指定的时间间隔长,她们将连续执行并且彼此之间没有时间间隔.
分享到:
评论

相关推荐

    多线程计时器

    多线程计时器是一种利用计算机并发处理能力的高级编程技术,它在程序设计中扮演着重要的角色。本文将深入探讨多线程计时器的工作原理、应用以及如何实现这样的功能。 首先,我们要理解什么是多线程。在单核处理器...

    使用线程的计时器

    在编程领域,尤其是在桌面应用程序和实时系统开发中,计时器是不可或缺的工具。C#是一种广泛用于构建Windows应用程序的编程语言,它提供了多种方式来实现计时器功能。本篇将详细介绍如何使用线程来实现一个倒计时...

    多个计时器 可以单个暂停 开始 重置

    同时,为了确保计时器的线程安全,尤其是在多线程环境中,需要考虑同步和锁机制,防止多个线程同时操作同一计时器导致的数据不一致。在某些编程语言中,如Java和C#,可以利用内置的同步原语(如`synchronized`关键字...

    简易的计时器

    在Python中,一个简单的单线程计时器可以使用`time.sleep()`函数来实现。这个函数会暂停程序执行,直到指定的时间(以秒为单位)过去。不过,这样的计时器并不适合实时性要求较高的应用,因为它会阻塞整个程序,期间...

    Android简单的计时器源码

    这里提到的是基于`Handler`的计时器实现,因为`Handler`更适合于UI线程的更新操作。 1. **Handler**:`Handler` 是 Android 中处理消息和延迟执行任务的核心类。通过创建一个`Handler`对象并关联到 Looper(消息...

    C#实现的Win32控制台线程计时器功能示例

    本文实例讲述了C#实现的Win32控制台线程计时器功能。分享给大家供大家参考,具体如下: 在C#中提供了三种类型的计时器: 1、基于 Windows 的标准计时器(System.Windows.Forms.Timer) 2、基于服务器的计时器(System....

    单线程进度条程序,可以方便的添加到你的工程中

    在这个进度条程序中,单线程意味着进度条的更新与主应用程序的其他任务是串行进行的,即先执行完一部分任务,然后更新进度条,再执行下一部分任务,以此类推。 进度条通常由两个主要部分组成:逻辑控制和界面渲染。...

    计时器源码.rar

    常见的计时器有单次触发和周期性触发两种。 - **事件驱动编程**:计时器通常与事件驱动编程模型相结合,当计时器到期时,会触发一个事件,进而执行相应的处理函数。 2. **编程语言支持:** - **C++**:C++中,...

    swoole_timer:单支协程计时器

    在Swoole中,我们可以创建两种类型的计时器:一次性计时器和周期性计时器。一次性计时器会在指定的时间后触发一次回调函数,然后自动销毁;周期性计时器则会按照设定的时间间隔持续触发回调函数,直到被手动取消。 ...

    js计时器 (脚本语言)

    1. 非阻塞特性:JavaScript是单线程的,计时器不会阻塞其他代码的执行,因此可能导致预期之外的执行顺序。 2. 回调地狱:如果多个计时器嵌套使用,可能会导致回调函数层次过深,形成“回调地狱”,不利于代码维护。 ...

    时钟计时器软件

    此外,某些计时器软件会提供线程本地存储(TLS)来为每个线程维护独立的计时数据,避免并发冲突。 4. 常见用途: - 性能分析:开发者在优化代码时,可以通过计时器测量代码段的执行时间,以便找出性能瓶颈。 - ...

    C#计时器C#计时器,用C#写的一款计时器系统,可以用来统计时间

    这种计时器常用于桌面应用程序,特别是与用户界面交互的情况。它在一个单独的线程上运行,因此不会阻塞UI线程。计时器事件(Tick)会在消息循环中触发,每当指定的间隔过去后,就会调用该事件的事件处理程序。 ...

    C#倒计时 计时器

    在编程领域,尤其是在开发桌面应用或者游戏时,计时器是一个非常重要的组件。本文将深入探讨C#语言中实现倒计时计时器的相关知识点,包括基础原理、使用方法以及如何实现时间到了自动进入下一轮计时的功能。 首先,...

    qt5.3 windows实现计时器

    根据需求,可以设置计时器为单次触发或周期触发。对于正计时和倒计时,我们可以在槽函数中更新时间并刷新界面。 4. **圆环进度条** 利用`QPainter`类,我们可以自定义绘图来实现圆环进度条。在`paintEvent`函数中...

    不依赖窗口的单线程Timer

    标题提到的“不依赖窗口的单线程Timer”是一种特殊类型的计时器,它并不依赖于Windows消息循环中的WM_TIMER消息来工作。这种设计可以提供更灵活的计时器使用方式,尤其是在不需要创建和管理窗口的场景下。 首先,...

    C#实现计时器

    这些操作会通过事件驱动编程的方式与后台的计时器逻辑相连接。 9. **异常处理**: 在实际应用中,计时器可能遇到各种异常,如用户关闭窗口、系统资源不足等。因此,良好的错误处理和异常捕获机制也是必不可少的,...

    c#计时器程序设计

    在C#编程语言中,计时器是一种非常实用的组件,它允许开发者创建可以在特定时间间隔触发事件的程序。在本项目中,我们探讨的是基于C#的计时器程序设计,这通常涉及到Windows Forms或者控制台应用程序。下面将详细...

    24小时制秒表计时器,同步系统时间,计时零误差

    3. **同步系统时间**:确保计时器与系统时间同步是确保零误差的关键。在.NET中,可以使用`DateTime.Now`或`DateTime.UtcNow`获取系统当前时间,以确保计时的准确性。如果应用程序需要在多线程环境中运行,还需要注意...

    计时器.net

    在.NET框架中,计时器(Timer)是一个非常重要的组件,它允许程序员在特定间隔执行某项操作。计时器类通常被用于实现自动化任务、实时数据更新或游戏中的帧率控制等场景。在本篇文章中,我们将深入探讨.NET计时器的...

    C#版线程-倒计时

    // 倒计时结束,停止计时器 countdownTimer.Stop(); this.BeginInvoke((Action)delegate { labelCountdown.Text = "倒计时结束"; }); } ``` 在实际开发中,我们可能还需要处理一些异常情况,如线程同步、取消倒...

Global site tag (gtag.js) - Google Analytics