Windows API 纳秒级别延迟

以下代码为搜集资料数小时整理出来:延时1秒  

HANDLE hTimer = NULL;
LARGE_INTEGER liDueTime;
liDueTime.QuadPart = -10000*1000;
hTimer = ::CreateWaitableTimer(NULL,TRUE,NULL);
::SetWaitableTimer(hTimer,&liDueTime,0,NULL,NULL,0);
::WaitForSingleObject(hTimer,INFINITE);
::CloseHandle(hTimer);

以下为直接搜索boost库源码,找出相关函数

 boost::this_thread::interruptible_wait(1000);

(泪奔啊。。。)折腾这么久,竟然在现成的库里面~

不过收获颇丰。呵呵

另外附加计算代码运算时间,对应boost库是否有暂未查找。

LARGE_INTEGER litmp;
LONGLONG QPart1, QPart2, QFre;
QueryPerformanceFrequency(&litmp);
QFre = litmp.QuadPart; // 获得计数器的时钟频率
QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart; // 获得初始值

// ... 目标指令 

QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//获得中止值

 

posted @ 2010-11-19 22:27  wuyaSama  阅读(2152)  评论(0编辑  收藏  举报