[英]about boost.asio async sleep
我使用boost.asio
异步读取数据,如果handle_read
需要花费很多时间(例如睡眠),它是否会影响其他连接?
使用异步IO,您通常可以在一个线程中执行所有操作,因此您应该尽量缩短内容。 在处理输入时你肯定不想睡觉。
Boost有定时器让你进行异步睡眠。
如果在一个线程中执行io_service::run
, io_service
顺序调用与该io_service
关联的所有i / o对象的完成处理程序。 因此,如果其中一个花费太多时间,则所有队列都会卡住。
为了防止出现这种情况,您可以重新设计此完成处理程序,或将具有有问题处理程序的i / o对象与在单独线程中运行的专用io_service
相关联。
(请注意,在多个线程中运行单个io_serivce
无法解决此问题,因为您无法知道处理程序如何在线程之间分配。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.