在C++ for Linux中,我试图做每微秒/纳秒的事情,目前正在使用下面的nanosleep函数.它可以工作,但是如果代码循环数百万次,这就变得很昂贵.我正在寻找一种高分辨率计时器,它可以实现非常精确的计时(应用程序是音频/视频).有任何想法吗?
struct timespec req = {0};
req.tv_sec = 0;
req.tv_nsec = 1000000000L / value;
for(long i = 0; i < done; i++)
{
printf("Hello world");
nanosleep(&req, (struct timespec *)NULL);
}
Run Code Online (Sandbox Code Playgroud)
使用C++11
#include <chrono>
#include <thread>
...
for (long i = 0; i < done; i++) {
std::cout << "Hello world" << std::endl;
std::this_thread::sleep_for(std::chrono::nanoseconds(1e9 / value));
}
Run Code Online (Sandbox Code Playgroud)
请记住使用标志进行编译-std=c++11。