簡體   English   中英

多線程和boost的io_service

[英]Multiple threads and boost's io_service

Boost的文檔說:在調用boost::asio::io_service::run()之前,給io_service一些工作很重要。 但是,如果我要做一些工作並且我的io_service對象運行方法正在多個線程上運行,會發生什么情況? 我應該為每個線程做1個工作,以防止其他人完成嗎? 或者,我可能會在許多線程上開始io的運行,並且只做一件工作。 我想提一提,我的問題中的“工作”一詞不涉及io_service::work::work

io_service的工作狀態不是由處理io_service的線程數量決定的。 例如,如果一個io_service有工作,則所有通過io_service::run()處理io_service線程將保持阻塞狀態,以處理事件循環,即使線程數量大於已發布工作的數量。 因此,將單個工作操作添加到io_service ,然后讓許多線程處理io_service是安全的。

總的來說,除非在io_service構造函數中特別暗示了並發性,否則io_service不會在由單個線程或多個線程處理的事件循環之間進行區分。 線程概述中所述, io_service將已加入其池的所有線程視為等效線程,以任意方式在線程之間分配工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM