首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
Windows程序
> 详细
windows程序如何实现精准定时
时间:
2015-01-21 22:35:04
阅读:
339
评论:
0
收藏:
0
[点我收藏+]
标签:
windows
定时器
有朋友问我,“小兵以太网测试仪”这个软件,是如何控制发包频率的。
我想想,干脆写一篇文章来聊聊这个问题吧。
windows下,每当一个程序设定的定时器时间到了,windows会给程序发送一个WM_TIMER消息。
根据著名的windows编程书籍《Windows程序设计》的描述(在第8章),
我们知道,windows的定时器有如下的缺陷:
1. 精度不高
windows98大概是55ms,Windows NT大概是10ms。
2. WM_TIMER消息可能无法及时处理
WM_TIMER消息和其他消息一样,存放在正常的消息队列之中。如果程序处理其他消息,用了太长的时间,就耽误了WM_TIMER消息的处理,从效果上看就相当于定时器来晚了。
3. WM_TIMER消息可能会有遗漏
这样一来,如果一个windows程序在时间方面有苛刻的要求(例如,测试仪之类的软件),怎么办呢。
“小兵以太网测试仪”采用的是如下的笨方法。
这种方法非常简单,但也确实有效。下面是此方法的伪代码。
interval=x; //所需的时间间隔
next_do_work_time=当前时间;
while (!need_stop)
{
do
{
cur_time=当前时间;
} while (!need_stop && cur_time<next_do_work_time);
if (need_stop) break;
DO_WORK();
next_do_work_time+=interval;
}
需要说明的是,这种方法是很消耗CPU的 :)
windows程序如何实现精准定时
标签:
windows
定时器
原文地址:http://blog.csdn.net/crazycoder8848/article/details/42977653
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
动态 WebApi 引擎使用教程(3行代码完成动态 WebApi 构建)
2021-07-28
windows 查看文件的md5/sha1/sha256
2021-07-28
git windows下换行符问题 LF与CRLF转换
2021-07-27
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。
2021-07-26
K8S--可视化界面Kubernetes Dashboard(API Server方式)
2021-07-26
Redis安装成windows服务
2021-07-26
c#32位支持大内存(>2gb)
2021-07-23
【c#】Dev BarStaticItem问题汇总
2021-07-23
Exception: URL fetch failure on https://s3.amazonaws.com/text-datasets/nietzsche.txt: None -- [WinError 10054] 远程主机强迫关闭了一个现有的连接。
2021-07-22
WinForm使用DataGridView实现类似Excel表格的查找替换
2021-07-22
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!