CPP WINDOWS:微秒级别的sleep函数是否存在?

10

我知道有一个用于毫秒的函数(Sleep(milli))

但是我找不到一个用于微秒的函数..


1
https://dev59.com/yG025IYBdhLWcg3wyJCV - Bojan Komazec
https://dev59.com/MXVD5IYBdhLWcg3wHnsX - JimR
4个回答

6

VS 11开发预览版包含处理线程的标准库部分。因此现在你可以这样说:

std::this_thread::sleep_for(std::chrono::microseconds(1));

当然,这并不意味着线程会在恰好这段时间后唤醒,但它应该尽可能接近平台(和库实现)允许的时间。正如其他评论所指出的那样,Windows实际上不允许线程休眠这么短的时间。

2
你可以使用rdtsc指令或QueryPerformanceCounter Windows API函数来获取高分辨率计数器。然后,你可以使用GetTickCount或时间函数进行校准。

1

Windows 无法休眠时间少于1毫秒。时间片往往比1ms要高得多,因此即使使用最高优先级的线程也不是真正可能的。

如果您不关心烧掉CPU,您可以旋转直到QueryPerformanceCounter已经流逝了您所需要的时间。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接