递归火山软件开发平台

标题: 时钟100%可靠吗? [打印本页]

作者: hs999xl    时间: 2024-6-12 08:26
标题: 时钟100%可靠吗?
本帖最后由 hs999xl 于 2024-6-12 08:28 编辑

举个例子:
时钟.时钟周期=1000
周期事件=输出当前时间=xx时xx分xx秒
问问:
1、时钟一定每秒钟会输出一次吗?
2、如果程序再做耗费资源的任务,会不会导致时钟来不急执行就错过了?.
3、我想实现定时任务,xx时xx分执行一个方法,大佬们有什么经验吗?


作者: hcwanz    时间: 2024-6-12 08:46
如果你要以普朗克时间为基准的话,时钟显然是不可靠的。
但以时分秒为基准就无所谓了,肯定准。
作者: Xelloss0618    时间: 2024-6-12 09:02
时钟的计时精度是比较差的,都有15毫秒左右的误差,如果需要高精度的计时,这肯定是不可靠。

然后Windows系统提供给你的时钟有三种:
1、SetTimer(MFC/WTL的时钟组件):周期事件在窗口的消息循环中运行,会阻塞UI线程,周期时间是两次事件中间的时间,必须等上一个周期时间执行完毕,才会计时执行一次周期事件,所以周期事件的耗时会增加到实际的时间间隔中;
2、timeSetEvent(多媒体时钟):单线程模式设计,除了不会阻塞UI线程之外,其他基本一样。由于周期事件在子线程中运行,需要谨慎操作窗口;

3、timer-queue(时钟队列):线程池模式设计,周期事件之间不会互相阻塞,每次事件触发的实际时间间隔是固定的(排除计时误差后);

作者: hs999xl    时间: 2024-6-12 09:22
突然想到一个实现定时任务的方法:
时钟周期事件=根据当前时、分、秒cha询定时任务哈希表,哈希表里存静态方法地址,如果取到就执行。
貌似就实现了时分秒的定时任务。
作者: CPUCN    时间: 2024-6-12 10:19
貌似不太准
作者: gzylove    时间: 2024-6-12 12:54
界面如果卡了,时钟就不准了吧
作者: peeete    时间: 2024-6-13 16:46
如果程序再做耗费资源的任务,会不会导致时钟来不急执行就错过了?.

条件允许的话执行事件都丢线程里面去
作者: hs999xl    时间: 2024-6-13 18:48
peeete 发表于 2024-6-13 16:46
如果程序再做耗费资源的任务,会不会导致时钟来不急执行就错过了?.

条件允许的话执行事件都丢线程里面去 ...

听君一席话,省我10本书。
作者: cloud261    时间: 2024-6-14 16:09
没有100%可靠的计时器,不管用什么方式去实现时钟,都有可能出现延迟

作者: hs999xl    时间: 2024-6-14 18:31
延迟执行也行,就怕错过了时间,代码就不执行了。




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4