如何使程序睡眠纳秒?我搜索了互联网,我发现了几种睡觉方式,但是:
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);
};
我尝试了很多东西,但一切都失败了。我该怎么办?
答案 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()
来实现这一目标。