簡體   English   中英

在多個線程上使用單個io_service有什么好處?

[英]Whats the benefit of using a single io_service over multiple threads?

我讀了一些關於短耳和脫穎而出的圖形的答案,無論是在實例和這里的SO,是使用單一io_service對象,並且將處理開放,發送和通過套接字接收消息工人之間分享。

在多個套接字抽象之間共享io_service有什么好處? 為什么不讓每個人都有自己的io_service?

據我了解,io_service“擁有”資源。 如果您有一個io_service處理所有asio函數,則可以管理優先級。 如果您有多個“擁有”相同資源的io_service實例,則它們將發生沖突。

我嘗試了這種模式,不建議您再將其用於僅某些非常特定的情況。 相反,我建議“始終僅從單個io_service使用套接字”方法,如果需要,請使用多個io_services(每個都在專用線程中運行)。

原因是,如果您從多個線程中使用一個io_service,則可以從任何參與線程中調用所有回調(完成處理程序),並且必須為其提供額外的同步。 在“資源屬於在一個線程上執行的一個io_service”模型中,您不需要這樣做,因為不會從另一個線程執行並發處理程序。

暫無
暫無

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

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