簡體   English   中英

提升asio io_service對象和基礎線程

[英]boost asio io_service object and the underlying threads

我正在使用boost asio庫。 這是我的實現

boost::asio::io_service ioservice;
boost::asio::io_service::work work(ioservice);
boost::thread_group threads;
for (int i = 0; i < 10; i++)
{
    threads.create_thread(
      boost::bind(&boost::asio::io_service::run, &ioservice));
}

然后,每當我需要io服務對象(例如異步讀/寫/計時器)時,都將ioservice對象的該實例作為參數傳遞。 如果我需要處理大量異步操作,則只需增加線程數即可。

一些同事僅使用一個工作線程創建多個io服務對象。

哪個是正確的實現? 可以改善嗎?

兩種方法都是正確的,但這取決於您要完成的工作。 io_service構成了很好的跨平台線程安全工作隊列。

如果要在某個線程上處理某些工作(即序列化某些工作項),則在一個線程上運行一個io_service是有意義的。

如果您希望處理某些工作,但不關心要在哪個線程上處理或處理順序,那么讓一個io_service在多個線程上運行是有意義的。

暫無
暫無

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

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