Недавно я столкнулся с необходимостью скрыть текущий поток за определенный период времени. Я знаю два способа сделать это на платформе POSIX: используя nanosleep()
или используя boost::this_thread::sleep()
.
Из любопытства больше, чем что-либо еще, мне было интересно, каковы различия между этими двумя подходами. Есть ли какая-либо разница в точности, и есть ли причина не использовать подход Boost?
nanosleep()
:
#include <time.h>
...
struct timespec sleepTime;
struct timespec returnTime;
sleepTime.tv_sec = 0;
sleepTime.tv_nsec = 1000;
nanosleep(&sleepTime, &returnTime);
Подход к повышению:
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/thread/thread.hpp>
...
boost::this_thread::sleep(boost::posix_time::nanoseconds(1000));