关于boost.asio异步睡眠
about boost.asio async sleep
我使用boost.asio
异步读取数据,如果handle_read
占用大量时间(如睡眠),是否会影响其他连接?
如果在一个线程中执行io_service::run
,则会顺序调用与该io_service
关联的所有i/o对象的完成处理程序。因此,如果其中一个花费了太多时间,那么所有的队列都会被卡住。
为了防止出现这种情况,您可以重新设计此完成处理程序,或者将具有问题处理程序的i/o对象与其在单独线程中运行的专用io_service
相关联。
(请注意,在多个线程中运行单个io_serivce
并不能解决这个问题,因为您不知道处理程序是如何在线程之间分布的。)
使用异步IO,通常在一个线程中完成所有工作,因此应尽量缩短时间。您在处理输入时肯定不想睡觉。
Boost有定时器,可以让你进行异步睡眠。
相关文章:
- TCP 服务器的异步读取使用 boost::asio 打印客户端套接字发送的数据
- 增强 ASIO 和串行端口异步读取
- 提升::Asio 异步聊天客户端停止与服务器通信
- 我有一个关于C++提升的问题:: asio 和 std :: 异步
- 某些 boost::asio 异步函数是否将处理程序连接到操作,以便处理程序被触发一次?
- 异步提升从stdin读取的asio
- 调用boost.asio的异步函数时,线程是什么时候创建的
- 为异步发送缓冲区保留内存(提升 asio 套接字)
- 如何使用 boost::asio io_service 运行函数异步
- 异步操作的 Asio 处理程序在其同步对应项正常工作时不会调用
- 提升::Asio 使用异步操作时传输的字节
- 如何使用 Boost.Asio 正确实现异步/等待语法
- 提升 ASIO:异步写入,同步
- Boost asio ip tcp iostream 是否支持异步?
- Boost.Asio 异步服务器.限制为一个连接
- 在std ::线程中升级ASIO阻止操作,而不是使用异步方法
- 异步服务器在创建boost :: asio后立即关闭
- 如果 Proactor 设计模式优于异步 I/O,为什么它在 ASIO 中不是默认值?
- 运行 boost::asio 异步服务器以及命令循环
- Boost::Windows上的Asio无法异步工作