12 #include <mrpt/config.h>
18 #if defined(MRPT_OS_LINUX)
34 const int64_t wait_tim_ns =
35 static_cast<int64_t
>(1.0e9 * (period - elapsed_tim));
36 if (elapsed_tim > period || wait_tim_ns <= 0)
42 #if !defined(MRPT_OS_LINUX)
43 std::this_thread::sleep_for(std::chrono::nanoseconds(wait_tim_ns));
45 timespec ts{0, 0}, ts_remainer{0, 0};
46 ts.tv_sec = wait_tim_ns / 1000000000;
47 ts.tv_nsec = wait_tim_ns % 1000000000;
55 int err = clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, &ts_remainer);
63 stderr,
"[CRateTimer::sleep] Error %i in clock_nanosleep()\n", err);