我正在使用 boost::asio::deadline_timer 像这样在async_read
操作在一个TCP套接字。我在用提升1.61.
long time_out_millis = 2000;
boost::asio::deadline_timer theTimer(theSocket.get_io_service(), boost::posix_time::milliseconds(time_out_millis));
Problem:
我的代码的其他部分使用std::chrono::milliseconds
。我想用std::chrono
而不是"long time_out_millis"
如果可能的话使用std::chrono::milliseconds
代替boost::posix_time::milliseconds
。我怎样才能做到这一点?
问题:
那么,我该如何使用std::chrono::milliseconds
这里 ?有没有办法让我从std::chrono::milliseconds
to boost::posix_time::milliseconds
?
直接解决:duration_cast<>
:
using namespace std::chrono;
using namespace std::chrono_literals;
boost::posix_time::seconds(duration_cast<seconds>(2s).count());
还是不太好。但这是你的钥匙。
更好的消息
在任何 c++11 或更高版本的场景中,只需
#include <boost/asio/high_resolution_timer.hpp>
并享受完全参数化的计时器std::chrono
从下到上。不再有阻抗失配:
Live On Coliru http://coliru.stacked-crooked.com/a/b0f25db47cc7f230
#include <boost/asio/high_resolution_timer.hpp>
using namespace std::chrono_literals;
int main() {
boost::asio::io_service svc;
boost::asio::high_resolution_timer tim(svc);
tim.expires_from_now(1s);
tim.expires_from_now(100ms);
tim.expires_from_now(3h);
tim.expires_from_now(15'000us);
tim.expires_from_now(15'000'000ns);
}
请注意,这会改变您的
long time_out_millis = 2000;
进入类似的东西
Clock::duration timeout = 2000ms;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)