
Windows Timer
Augusdi
让时间验证一切,让时间验证我。感谢大家的无私帮助,我愿以同样的态度回馈我热情的朋友,用我们的热忱开创美好未来!
展开
-
QueryPerformanceFrequency高精度计时
利用这两个函数可以创建跟硬件时钟的晶振一样精确的计时器。在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率, 然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经 历的精确时间。1.如下函数查询cpu时钟频率,(如我的cpu是2.89GHz,转载 2013-09-02 23:11:46 · 2191 阅读 · 0 评论 -
MFC定时器的应用
在计算机程序设计领域,有很多功能是周期性执行的,如:数据采集程序,系统时间的显示等。数据采集:周期性地获得现场的物理量信息系统时间的显示:周期性地获得系统时间,并显示出来。 完成上述这些功能的代码都是按照一定的时间间隔周期性地执行的,这是就需要用到一个新的组件——定时器(TIMER)。 定时器是Windows系统的资源, Visual C++提供了定时器消息和一些与定时相关的函数。使用这些函数转载 2013-09-03 14:11:16 · 1971 阅读 · 0 评论 -
timeSetEvent定时器
MSDN里定义的函数原型如下:MMRESULT timeSetEvent( UINT uDelay , UINT uResolution , LPTIMECALLBACK fptc ,转载 2013-09-03 14:13:27 · 3546 阅读 · 2 评论 -
SetTimer在Win32和非窗口下定时
#include "stdafx.h"#include #include #include UINT cnt = 0;// 定时器回调函数void CALLBACK TimeProc(HWND hwnd, UINT message, UINT idTimer, DWORD dwTime);// 线程回调函数DWORD CALLBACK ThreadProc(PVOID pvoi原创 2013-09-03 14:20:24 · 8065 阅读 · 0 评论 -
Visual C++实现微秒级精度定时器
Visual C++实现微秒级精度定时器在工业生产控制系统中,有许多需要定时完成的操作,如:定时显示当前时间,定时刷新屏幕上的进度条,上位机定时向下位机发送命令和传送数据等。特别是在对控制性能要求较高的控制系统和数据采集系统中,就更需要精确定时操作。众所周知,Windows是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的。这样就带来了一些问题,如一旦计算机的CPU被某个进程占用,转载 2013-09-03 14:26:14 · 3954 阅读 · 0 评论 -
QueryPerformanceFrequency高精度定时
#include #include #include #include int _tmain(int argc, _TCHAR* argv[]){ AcquireExecutionTime apt; if(apt.IsSupport() == false ) { return -1; } for(int i=0; i< 10; i++) { Sleep(100);转载 2013-09-02 22:49:59 · 3269 阅读 · 0 评论 -
C++记录精确时间-QueryPerformanceFrequency()
精确获取时间QueryPerformanceFrequency() - 基本介绍类型:Win32API原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);作用:返回硬件支持的高精度计数器的频率。返回值:非零,硬件支持高精度计数器;零,硬件不支持,读取失败。QueryPerformanceFrequency() - 技术特点转载 2013-09-03 09:42:10 · 15053 阅读 · 0 评论 -
C++中利用多线程实现定时器
#ifndef CTIMER_H_ #define CTIMER_H_ #include class CTimer { public: CTimer(); ~CTimer(); void StartTimer(unsigned int nElapse); void EndTimer(); static DW转载 2013-09-03 14:30:54 · 5998 阅读 · 0 评论 -
C/C++中如何精确计时
http://blog.youkuaiyun.com/bendanban/article/details/7673607 给程序计时对于程序员来说实在是太重要了,在windows上的那个clock()实在是不够精确,精度只有10ms,真让人难过。研究了下windows下使用C、C++计时的函数,给大家分享下。 主要就是两个函数的使用。我先把一段可以运行的代码贴出来,然后讲讲这两个函数。#include #i转载 2013-09-21 23:26:36 · 2825 阅读 · 0 评论 -
Windows中子线程不能触发定时器的问题分析
对窗口来说,都会有一个消息循环线程(此消息线程即UI线程)执行各类任务,一般情况此线程大部分时间都处于空闲状态,由消息泵等待消息触发各类操作(如界面刷新、定时器响应等),除非窗口退出,不然不会退出此线程。 在窗口线程或主线程中使用定时器由于有消息泵等待定时器消息,所以不会存在不响应定时器的情况。但子线程在创建时一般不需要消息泵,所以按顺序执行完后直接退出,就算是有定时器需要触发,子线程也不知道,所转载 2013-09-03 14:04:16 · 2704 阅读 · 0 评论 -
精确时间计时QueryPerformanceCounter,QueryPerformanceFrequency
精确的时间计时,有时候是非常必要的。比如播放多媒体时视频与音频的时间同步,还有在测试代码的性能时,也需要使用到非常精确的时间计时。还有测试硬件的性能时,也需要精确的时间计时。这时就需要使用QueryPerformanceCounter来查询定时器的计数值,如果硬件里有定时器,它就会启动这个定时器,并且不断获取定时器的值,这样的定时器精度,就跟硬件时钟的晶振一样精确的。 QueryPerfor转载 2013-09-03 13:02:19 · 2423 阅读 · 0 评论 -
使用QueryPerformanceFrequency、QueryPerformanceCounter精确计时
一、QueryPerformanceFrequency()-基本介绍类型:Win32API原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);作用:返回硬件支持的高精度计数器的频率。返回值:非零,硬件支持高精度计数器;零,硬件不支持,读取失败。二、QueryPerformanceCounter()-基本介绍BOOL转载 2013-09-02 23:08:40 · 3399 阅读 · 2 评论 -
QueryPerformanceCounter精确计算执行时间
QueryPerformanceCounter 來精確計算執行時間在 Windows Server 2003 和 WindowsXP 中使用 QueryPerformanceCounter 函数的程序可能执行不当.// 這個程式展示了如何使用QueryPerformanceCounter 來精確計算執行時間//代码LARGE_INTEGER m_liPerfFreq={0};//获取每秒多少CP转载 2013-09-03 09:56:52 · 4801 阅读 · 0 评论 -
时间的函数Sleep,clock,GetTickCount,QueryPerformanceCounter
介绍 我 们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执行一个特定的操作,比如在多媒体中,比如在游戏中等,都 会用到时间函数。还比如我们通过记录函数或者算法开始和截至的时间,然后利用两者之差得出函数或者算法的运行时间。编译器和操作系统为我们提供了很多时间 函数,这些时间函数的精度也是各不相同的,所以,如果我们想得到准确的结果,必须使用合适的转载 2013-09-03 10:14:06 · 6496 阅读 · 0 评论 -
QueryPerformanceCounter实现Windows微秒级延时
windows的Sleep函数,睡眠线程指定毫秒数,可以用来做毫秒延时。对于微秒延时,没有一个现成的函数,但是可以通过QueryPerformanceFrequencyQueryPerformanceCounter来间接实现。原理就是用循环查询的方式不断调用QueryPerformanceCounter(在Winbase.h中)LARGE_INTEGER freq;LARGE_INTEGER s转载 2013-09-03 12:26:16 · 8992 阅读 · 0 评论 -
封装多媒体定时器类和时间核心对象线程类
背景:虽然Win95下可视化开发工具如VC、Delphi、C++ Builder等都有专用的定时器控件Timer,而且使用很方便,可以实现一定的定时功能,但最小计时精度仅为55ms,且定时器消息在多任务操作系统中的优先级很低,不能得到及时响应,往往不能满足实时控制环境下的应用。不过Microsoft公司在Win32 API函数库中已经为用户提供了一组用于高精度计时的底层函数,如果用户使用得转载 2013-09-03 14:25:43 · 2259 阅读 · 0 评论 -
QueryPerformanceFrequency,RDTSC,CPU频率
//warning C4035: 'RDTSC' : no return value#pragma warning(disable:4035) #include //RDTSC-Read Time-Stamp Counter//自开机以来CPU经历的时钟周期数unsigned __int64 RDTSC(){ __asm _emit 0x0F;转载 2013-09-02 23:11:17 · 2374 阅读 · 0 评论 -
VC++获得计算机CPU频率
// TestQueryPerformance.cpp : Defines the entry point for the console application.////warning C4035: 'RDTSC' : no return value#pragma warning(disable:4035)#include //RDTSC-Read Time-Stamp Coun原创 2013-09-02 17:22:55 · 3827 阅读 · 0 评论 -
QueryPerformanceFrequency Window下的高精度计时器
#include "stdafx.h"#include #include #include "AcquireExecutionTime.h"int _tmain(int argc, _TCHAR* argv[]){ AcquireExecutionTime apt; if(apt.IsSupport() == false ) { return -1; } for(int i转载 2013-09-03 09:33:00 · 1927 阅读 · 1 评论 -
High-resolution timer for C++
High-resolution timer for C++ Simon Wybranski 27 Dec 2011 4:01 PM Comments 6 Howdy ho! My name is Simon Wybranski, I am a developer on the C++ AMP team!In this blog post I am going to present a high-r转载 2013-09-21 23:35:00 · 2244 阅读 · 0 评论