使用 boost::this_thread::sleep_for() 和常规 sleep() 函数有啥区别?

Posted

技术标签:

【中文标题】使用 boost::this_thread::sleep_for() 和常规 sleep() 函数有啥区别?【英文标题】:Whats the difference between using boost::this_thread::sleep_for() and regular sleep() function?使用 boost::this_thread::sleep_for() 和常规 sleep() 函数有什么区别? 【发布时间】:2015-04-27 03:30:20 【问题描述】:

我们知道boost::this_thread::sleep_for(...) 可用于使当前运行的线程进入睡眠状态。它与常规的sleep() 函数有多么不同。似乎我们使用boost::this_thread::sleep_for(...) 的每个地方都可以简单地替换为sleep() 方法而不影响结果。任何人都可以给它一些亮点。

【问题讨论】:

sleep() 不可移植。 【参考方案1】:

直到 C++11 出现,C++ 才提供睡眠功能,它提供了std::thread::sleep_for()。因此 Boost 提供了自己的功能,使您的代码与平台无关。

C 函数 sleep()、usleep() 和 Sleep() 是特定于平台的,而不是 C++ 标准库的一部分。

【讨论】:

【参考方案2】:

sleep 仅以 1 秒的粒度运行,boost::this_thread::sleep_for 也允许低于 1 秒的睡眠粒度。

【讨论】:

以上是关于使用 boost::this_thread::sleep_for() 和常规 sleep() 函数有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)