windows下实现微秒级延时
2014-02-19 10:12
211 查看
//常规
void sleep_micro_seconds(ULONG ulMicroSeconds)
{
LARGE_INTEGER varFrequency = {0}, varCounter_Start = {0}, varCounter_End = {0};
double dFrequency = 0;
LONGLONG llCount = 0;
::QueryPerformanceFrequency(&varFrequency);
dFrequency = varFrequency.QuadPart/1.0;
::QueryPerformanceCounter(&varCounter_Start);
while(true)
{
::QueryPerformanceCounter(&varCounter_End);
llCount = varCounter_End.QuadPart - varCounter_Start.QuadPart;
if((llCount/dFrequency) > (ulMicroSeconds/1000000.0) )
{
break;
}
}
}
//优化
void sleep_micro_seconds(ULONG ulMicroSeconds)
{
LARGE_INTEGER varFrequency = {0}, varCounter_Start = {0}, varCounter_End = {0};
LONGLONG llCount = 0;
::QueryPerformanceFrequency(&varFrequency);
::QueryPerformanceCounter(&varCounter_Start);
while(true)
{
::QueryPerformanceCounter(&varCounter_End);
llCount = varCounter_End.QuadPart - varCounter_Start.QuadPart;
if(1000000*llCount > ulMicroSeconds*varFrequency.QuadPart)
{
break;
}
}
}
int main(int argc, char* argv[])
{
sleep_micro_seconds(40);
}
void sleep_micro_seconds(ULONG ulMicroSeconds)
{
LARGE_INTEGER varFrequency = {0}, varCounter_Start = {0}, varCounter_End = {0};
double dFrequency = 0;
LONGLONG llCount = 0;
::QueryPerformanceFrequency(&varFrequency);
dFrequency = varFrequency.QuadPart/1.0;
::QueryPerformanceCounter(&varCounter_Start);
while(true)
{
::QueryPerformanceCounter(&varCounter_End);
llCount = varCounter_End.QuadPart - varCounter_Start.QuadPart;
if((llCount/dFrequency) > (ulMicroSeconds/1000000.0) )
{
break;
}
}
}
//优化
void sleep_micro_seconds(ULONG ulMicroSeconds)
{
LARGE_INTEGER varFrequency = {0}, varCounter_Start = {0}, varCounter_End = {0};
LONGLONG llCount = 0;
::QueryPerformanceFrequency(&varFrequency);
::QueryPerformanceCounter(&varCounter_Start);
while(true)
{
::QueryPerformanceCounter(&varCounter_End);
llCount = varCounter_End.QuadPart - varCounter_Start.QuadPart;
if(1000000*llCount > ulMicroSeconds*varFrequency.QuadPart)
{
break;
}
}
}
int main(int argc, char* argv[])
{
sleep_micro_seconds(40);
}
相关文章推荐
- [转]windows下实现微秒级的延时
- QueryPerformanceCounter实现Windows微秒级延时
- windows下实现微秒级的延时
- windows下实现微秒级的延时
- windows下实现微秒级的延时
- windows下实现微秒级的延时
- Windows编程微秒级延时的实现
- QueryPerformanceCounter实现Windows微秒级延时
- MFC 中怎么实现微秒级的延时
- 教你一招:windows批处理中实现延时的办法
- Windows高精度微秒级(并发)定时器实现
- STM32Cubemx下实现通用定时器微秒级延时
- [Z]Windows批处理中延时的实现
- 用QueryPerformanceCounter实现Windows XP 下微秒级延时
- (转)Windows 批处理实现 定时打开IE 延时一段时间后 关闭IE
- windows批处理中实现延时的办法
- Windows 批处理实现 定时打开IE 延时一段时间后 关闭IE
- C或C++调用Windows系统函数 实现延时 或 获取当前时间的处理
- 利用select函数的定时返回功能在Windows上实现微秒级的cpu休眠
- Windows下实现USBkey桌面登录