boost asio async_read_some timeout
boost asio async_read_some timeout
我使用 async_read_some
与超时使用此代码
readdata=0;
port_->async_read_some(boost::asio::buffer(vector),
boost::bind(readCallback));
//init async timer
boost::asio::deadline_timer timer(io);
timer.async_wait(boost::bind(timeoutHandler));
timer.expires_from_now(boost::posix_time::seconds(5));
io.reset();
do {
io.run_one();
}
while (readdata==0);
这是我的回调
void readCallback()
{
std::cout << "READ CALLBACK: "<<x<<std::endl;
readdata=1;
return;
}
void timeoutHandler()
{
std::cout << "TIMEOUT CALLBACK: "<<x<<std::endl;
readdata=1;
}
我的问题是,Timeouthandler是立即执行的,而不是5秒后
简单错误。您应该在致电async_wait
之前进行expires_from_now
。
#include <iostream>
#include <asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
int main() {
asio::io_service io_s;
asio::deadline_timer timer(io_s);
timer.expires_from_now(boost::posix_time::seconds(5));
timer.async_wait([](auto err_c) { std::cout << "After 5 seconds" << std::endl; } );
io_s.reset();
io_s.run();
return 0;
}
相关文章:
- "Terminated due to timeout"
- Timeout for SDLNet_TCP_Recv?
- 为什么以下代码块提供输出"ZZZ(some garbage value)"而不是"ZZ(some garbage value)"
- 错误:在类型 "blah blah" 的绑定引用中删除限定符以初始化"some other blah blah"
- 如何称呼表达式"T (&some(...))[2]' 其中 T=字符
- QTimer timeout()方法不再在代码重组后启动
- 为什么GCC可以编译std::exception("some error msg")而没有错误?
- 如何修复问题中的"teminated due to timeout"错误 数组操作 |黑客兰克?
- boost:asio::read or boost:asio::async_read with timeout
- boost asio async_read_some timeout
- 控制台在打印char*some输出时停止
- C++ 字符值 + "-some words here-"但错误 C2110
- C/C++ recv() with timeout
- 我怎样才能写得"if not greater than or equal to some value"雄辩?
- 当 std::stringstream 由 ( "some content" , std::ios::in|std::ios::ate) 构造时,tellg() 的预期行为是什么?
- Pthread timeout
- C++参数 :logic 和 :timeout 是否在 Z3 不稳定分支中被弃用
- VideoCapture select timeout with OpenCV 3.0.0-rc1
- 排序后丢失"some"十进制值
- 如何创建全局处理 Win+<some 键>组合的应用?