usleep函数不能用于windows,那怎么办,毫秒级的sleep还是快了 10

 我来答
东师陈老师
高粉答主

2018-04-18 · 每个回答都超有意思的
知道大有可为答主
回答量:1.5万
采纳率:41%
帮助的人:1355万
展开全部

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);

}

usleep()函数的功能是把调用该函数的线程挂起一段时间, 单位是微秒(microseconds:即百万分之一秒); 头文件: unistd.h 语法: void usleep(int micro_seconds); 返回值: 无 内容说明:本函数可暂时使程序停止执行。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友51c6b8f
2014-05-03 · TA获得超过335个赞
知道小有建树答主
回答量:171
采纳率:100%
帮助的人:125万
展开全部
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本身就不是个实时系统,但是你用应该足够了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的tfxz007
2014-04-30
知道答主
回答量:10
采纳率:0%
帮助的人:5.5万
展开全部
Sleep(1000); 不就是休眠一秒吗?
更多追问追答
追问
是啊,但还是慢了
追答
你是想精度更高,那我只知道 可等候定时器, 精度可以达到100纳秒左右。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-04-30
展开全部
这群捞货 就用这种low法爆吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式