usleep函数不能用于windows,那怎么办,毫秒级的sleep还是快了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了usleep函数不能用于windows,那怎么办,毫秒级的sleep还是快了相关的知识,希望对你有一定的参考价值。
参考技术Avoid delay_us(void)
LARGE_INTEGER litmp;
LONGLONG QPart1, QPart2;
double dfMinus, dfFreq, dfTim;
QueryPerformanceFrequency(&litmp);
dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;// 获得初始值
do
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//获得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒
while(dfTim<0.000001);
usleep()函数的功能是把调用该函数的线程挂起一段时间, 单位是微秒(microseconds:即百万分之一秒); 头文件: unistd.h 语法: void usleep(int micro_seconds); 返回值: 无 内容说明:本函数可暂时使程序停止执行。
参考技术B void delay_us(void)LARGE_INTEGER litmp;
LONGLONG QPart1, QPart2;
double dfMinus, dfFreq, dfTim;
QueryPerformanceFrequency(&litmp);
dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;// 获得初始值
do
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//获得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒
while(dfTim<0.000001);
这样大体延迟1微秒,用的是根据CPU的频率方法,但是没法非常精确,因为WINDOWS本身就不是个实时系统,但是你用应该足够了 参考技术C Sleep(1000); 不就是休眠一秒吗?追问
是啊,但还是慢了
追答你是想精度更高,那我只知道 可等候定时器, 精度可以达到100纳秒左右。
追问该怎么做啊
参考技术D 这群捞货 就用这种low法爆吧?linux下的sleep()和usleep()的使用和区别
函数名: sleep
头文件: #include<windows.h> // 在VC中使用带上头文件
#include<unistd.h> // 在gcc编译器中,使用的头文件因gcc版本的不同而不同
功 能: 执行挂起指定的秒数
语 法: unsigned sleep(unsigned seconds);
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int a; a=1; printf("hello"); sleep(a); /* VC 使用Sleep*/ printf("world"); return 0; }
函数名: usleep
头文件: #include <unistd.h>
功 能: usleep功能把进程挂起一段时间, 单位是微秒(百万分之一秒);
语 法: void usleep(int micro_seconds);
返回值: 无
内容说明:本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的微秒数(us)。
注 意:
这个函数不能工作在windows 操作系统中。用在Linux的测试环境下面。
参 见:usleep() 与sleep()类似,用于延迟挂起进程。进程被挂起放到reday queue。
在一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。
如果延迟时间为几十毫秒(1ms = 1000us),或者更小,尽可能使用usleep()函数。这样才能最佳的利用CPU时间
以上是关于usleep函数不能用于windows,那怎么办,毫秒级的sleep还是快了的主要内容,如果未能解决你的问题,请参考以下文章