- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我最近发现需要让当前线程休眠一段确切的时间。我知道在 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/
C++11 std::this_thread::yield() 和 std::this_thread::sleep_for() 有什么区别?如何决定何时使用哪一个? 最佳答案 std::this_th
我在实现过程中遇到了一个具体问题,但找不到解决方案。 我有一个分为两部分的应用程序。一部分是 Java swing GUI。第二部分是一个 C++ 应用程序,它执行所有(耗时的)计算逻辑。这两个进程(
我在编写 Microsoft 特定的 C++ 代码时被告知要编写 Sleep(1)在自旋锁定方面比 Sleep(0) 好得多,因为 Sleep(0) 将使用更多的 CPU 时间,而且,它只有在有另一个
C++ 98和Boost 1.54 我在弄清楚为什么使用boost::this_thread::sleep_for会使我的整个程序处于休眠状态时遇到了麻烦。调用Wait()函数的唯一时间和地点是在此线
我正在尝试做一件非常简单的事情(但花了几个小时没有结果):打印一行,睡一会儿,打印第二行。我希望下面的代码可以做到这一点,但是,它首先会休眠,然后同时打印两行!谁能看到我在这里缺少的东西? 这是完整的
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: std::this_thread::sleep_for() and GCC 尝试编写一个简单的计时器和一些代
我正在使用 this_thread::sleep_for() 进行测试创建一个类似于 cout 的对象, 除了在打印字符串时它会在每个字符之间有一个小的延迟。但是,它不是在每个字符之间等待 0.1 秒
我可以通过以下方式将线程 ID 打印到控制台: cout Windows -> Threads -> [ID column] 如果我在 Debug -> Windows -> Threads 中按此
我有一个包含两个线程的简单程序,一个将 packaged_task 推送到一个 deque 中,另一个执行它。在任务中有一个 this_thread::sleep_for,我希望只有“进程”线程会等待
有人可以提供C++应用程序中std::this_thread::yield()用法的真实示例吗? 最佳答案 我在实现std::lock的过程中使用了yield,可以在这里找到: http://llvm
std::this_thread::get_id 是否独立于调用它的线程的创建方式(无论是通过 std::thread 还是 OpenMP 或 pthreads 或操作系统 API)? 最佳答案 是的
这正确地拉入了一个文本文件,但它没有以正确的顺序输出它,我需要一个线程来产生,但是当我尝试实现它时,它没有工作。每次程序运行时,它都会以随机顺序显示 vows 和 cons,即使使用了 yield 函
同事和我讨论了一个假设的问题,当一个人想用 std::atomic_flag 实现自旋锁互斥锁,但也实现自旋锁不是 while(true) 而是作为 while(true) { cnt=0;
在开发基于 VoIP 的应用程序时,我们有一个通用的多线程 C++11 模块。它在 iOS、MacOS 中运行良好,但在 Android 中发现线程调度困难。 可选的设计说明(仅在感兴趣时) 我有几个
在 Debug模式下运行时,抛出中断错误时崩溃: 如何中断线程池,以及如何正确捕获中断(以及在哪里?在分派(dispatch)的作业中,还是在 CancelAll 中?)如果没有中断点,它不会崩溃,但
在使用 std::this_thread::sleep_for() 毫秒及以上时,是否需要考虑任何已知的可移植性问题? 在我正在进行的项目中,我希望使用 Microsoft 的 Sleep() 到 n
boost/thread/pthread/shared_mutex.hpp 包含这段代码: ... #include ... class shared_mutex { ... voi
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个循环,我想确保它在每个循环中运行(大约)固定的时间量。 我正在使用 sleep_for 来实现此行为,但我也希望程序能够在不完全支持标准线程库的环境中编译。现在我有这样的东西: using n
请注意,这不是关于 std::condition_variable::wait_for() 的问题。我知道这可能会虚假唤醒。 我的程序的行为表明这个问题的答案是肯定的,但是 STL 文档对于 cond
我是一名优秀的程序员,十分优秀!