ALi*_*iff 13 c++ boost timer boost-asio
要在5秒内使计时器到期,
这两者之间是否存在实际差异?
对于这种情况,是否有人优先考虑(性能,资源等)?
[备选方案1] deadline_timer:
boost::asio::deadline_timer timer(io_service);
timer.expires_from_now(boost::posix_time::seconds(5));
Run Code Online (Sandbox Code Playgroud)
[备选方案2] waitable_timer(system_timer或steady_timer):
boost::asio::system_timer timer(io_service);
timer.expires_from_now(std::chrono::seconds(5));
Run Code Online (Sandbox Code Playgroud)
PS:请专心比较deadline_timer对system_timer的,而不是system_timer对steady_timer.
Ant*_*vin 10
唯一的区别是使用的时钟类型.
作为升压1.56,两者basic_deadline_timer并basic_waitable_timer用detail::deadline_timer_service内.
它如何执行等待没有区别,唯一的区别在于它如何执行时间计算.
在它的wait()方法中,它用于Time_Traits::now()检查是否需要等待更多.对于system_timer它std::chrono::system_clock::now(),deadline_timer它是boost::posix_time::microsec_clock::universal_time()或boost::posix_time::second_clock::universal_time()取决于高精度时钟的存在(见time_traits.hpp).
std::chrono::system_clock实现由编译器/标准库供应商提供,而boost::posix_time::*clock由Boost使用可用的系统功能实现.
当然,这些实现可以具有不同的性能和/或精度,这取决于平台和编译器.
小智 6
这里对类似问题有很好的反应:https : //stackoverflow.com/a/16364002/3491378
基本上,主要区别在于,如果您希望系统时钟有任何外部更改,您应该使用 stable_timer -deadline_timer 延迟将受到这些更改的影响
| 归档时间: |
|
| 查看次数: |
7972 次 |
| 最近记录: |