我使用boost.asio
异步读取数据,如果handle_read
需要很多时间(如睡眠),是否会影响其他连接?关于boost.asio异步睡眠
1
A
回答
2
如果在一个线程中执行io_service::run
,则会按顺序调用与该io_service
关联的所有I/O对象的完成处理程序。所以,如果其中一个花费太多时间,所有队列都会卡住。
为了防止出现这种情况,您可以重新设计此完成处理程序,或将具有问题处理程序的I/O对象与在独立线程中运行的其专用io_service
相关联。
(请注意,在运行多线程一个io_serivce
不会解决这个问题,因为你无法知道处理程序如何在线程之间分配。)
2
对于异步IO,您通常会在一个线程中执行所有操作,因此您应该尽可能缩短时间。你绝对不要想要在处理输入时睡觉。
Boost有timers让你做一个异步睡眠。
相关问题
- 1. 异步执行中的同步睡眠?
- 2. .net 2.0中的异步睡眠
- 3. 异步/等待清晰,睡眠例如
- 4. Boost.Asio:异步操作超时
- 5. 异步解决与Boost.Asio
- 6. 关于java线程的睡眠状态
- 7. Message Broker 6.1睡眠异常
- 8. 关闭睡眠模式?
- 9. 与recvfrom,睡眠的关系
- 10. 异步使用Boost.Asio下载URL列表
- 11. .NET异步IO与响应处理程序调用睡眠相关
- 12. 让iPhone免于睡眠
- 13. 使用异步睡眠在一个线程没有冻结
- 14. 睡眠没有同步语义吗?
- 15. 睡眠和睡眠开始错误
- 16. 睡眠()或睡眠()的准确程度
- 17. 如何禁用睡眠/睡眠功能?
- 18. 睡眠和睡眠有没有区别?
- 19. PHP睡眠VS庆典睡眠
- 20. 关于WCF中的异步
- 21. cron运行时的C睡眠差异
- 22. Python执行和睡眠时间差异
- 23. Java的睡眠所中断异常
- 24. 睡在睡眠中的NSTimer
- 25. 异常在Boost.Asio的
- 26. Azure WebJobs睡眠
- 27. Fortran睡眠
- 28. SHOW PROCESSLIST:睡眠
- 29. Web Worker睡眠
- 30. 睡眠呼吁
你的问题我也不清楚,请澄清。 –