gpt4 book ai didi

c++ - boost::this_thread::sleep() 与 nanosleep()?

转载 作者:IT老高 更新时间:2023-10-28 21:50:29 25 4
gpt4 key购买 nike

我最近发现需要让当前线程休眠一段确切的时间。我知道在 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);

boost 方法:

#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/thread/thread.hpp>
...
boost::this_thread::sleep(boost::posix_time::nanoseconds(1000));

最佳答案

我能想到的使用 boost 的几个原因:

  • boost::this_thread::sleep() 是一个boost.thread 中的中断点
  • boost::this_thread::sleep() 可以替换为 C++0x 的插件std::this_thread::sleep_until() 在 future

为什么不 - 如果您根本不使用线程,或者您的项目中的其他所有内容都使用 POSIX 调用,那么 nanosleep() 更有意义。

至于精度,在我的系统上,boost 和 nanosleep() 调用相同的系统调用,hrtimer_nanosleep()。我想 boost 作者试图在每个系统上获得尽可能高的精度,对我来说,这恰好与 nanosleep() 提供的相同。

关于c++ - boost::this_thread::sleep() 与 nanosleep()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3072912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com