寻找高分辨率计时器

Jos*_*osh 5 c++ linux timer

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

Shr*_*han 4

使用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