升壓的3210說:重要的是在致電boost::asio::io_service::run()
之前給io_service
做一些工作。但是如果我要做一些工作並且我的io_service
對象運行方法正在多線程上運行,會發生什麼?我應該給每個線程1個工作,以防止其他人完成?或者我可以啓動io的許多線程運行,並只給1件工作。我想提一提,在我的問題中,'工作'這個詞不是指io_service::work::work
。多線程和升壓io_service
2
A
回答
5
io_service
的工作狀態不是由處理io_service
的線程數量決定的。例如,如果io_service
已經工作,即使線程數量大於發佈的工作量,處理io_service
通過io_service::run()
的所有線程仍將阻止處理事件循環。因此,將單個工作操作添加到io_service
是安全的,然後有許多線程處理io_service
。總體而言,除非在io_service
構造函數中明確暗示併發性,否則io_service
不會區分由單個線程或多個線程處理的事件循環。如threads overview中所述,io_service
將把所有加入其池的線程視爲等效線程,以任意方式在線程之間分配工作。
相關問題
- 1. 升壓io_service對象調查
- 2. 升壓ASIO多線程
- 3. 升壓線程和插座
- 4. 如何刪除升壓io_service對象
- 5. 升壓C++線程
- 6. 多線程升壓 - asio服務器(VS升壓異步服務器教程)
- 7. 升壓線程與CLR
- 8. 升壓線程錯誤
- 9. 如何使升壓線程池::線程
- 10. 多個提升io_service在單獨的線程上的多個網卡
- 11. boost asio io_service對象和底層線程
- 12. io_service :: run()的專用線程
- 13. 提升。多線程
- 14. 如何取消升壓ASIO io_service對象後
- 15. 升壓短耳,io_service對象處理每個核心
- 16. 使用Boost線程和io_service創建線程池
- 17. 訪問升壓線程對象
- 18. 帶升壓線程的Qt更新GUI
- 19. 升壓線程中的內存泄漏?
- 20. 與Eclipse升壓找不到線程庫
- 21. 升壓線程 - 通過參考
- 22. 試圖鏈接升壓1.52線程
- 23. 升壓過程
- 24. 提升:大圖和多線程
- 25. 提升多線程和共享變量
- 26. 升壓共享指針:多線程同時讀取訪問
- 27. 使用升壓異步API的多線程
- 28. Serialize io_service :: post()執行io_service :: run()僅在單個線程中調用
- 29. 升壓線壞訪問
- 30. 升壓線與 「睡眠」