C ++:如何睡一纳秒?

时间:2012-06-16 13:47:04

标签: c++ windows sleep

  

可能重复:
  Sleep Less Than One Millisecond

如何使程序睡眠纳秒?我搜索了互联网,我发现了几种睡觉方式,但是:
windows.h的Sleep()只能睡几毫秒 ctime的{​​{1}}仅适用于POSIX系统,而我使用的是Windows 我也试过这个:

nanosleep()

但Code :: Blocks说:

int usleep(long usec)
{
    struct timeval tv;
    tv.tv_sec = usec/1000000L;
    tv.tv_usec = usec%1000000L;
    return select(0, 0, 0, 0, &tv);
};

我尝试了很多东西,但一切都失败了。我该怎么办?

2 个答案:

答案 0 :(得分:12)

使用C ++ 11

#include <chrono>
#include <thread>
...
std::this_thread::sleep_for(std::chrono::nanoseconds(1));

请注意,实施可能会比给定时段睡得更久。

答案 1 :(得分:4)

你还应该注意到有一个调度程序,它可能不允许短于一个时间片的睡眠(大约4毫秒--10毫秒,具体取决于你的窗户和机器)。

是不可能睡不着的

Here are some (quite old) research on that issue个窗口。

本文建议使用Win32 timeBeginPeriod()来实现这一目标。