2009-12-03 60 views
3

根據Boost Documentation,多線程調用io_service::run()設置了IO服務可用於執行異步任務的線程池。它明確規定所有加入池的線程都被認爲是等價的。是否可以使用單獨的線程來讀寫Boost.Asio?

這是否意味着它不可能擁有一個單獨的線程來讀取套接字和單獨的線程來寫入?如果可能的話,我將如何實現這一點?

回答

5

任何調用io_service::run()的線程都可以用來調用異步處理程序。但是你不能專門指定哪個線程執行哪種類型的操作。例如,如果在2個後臺線程中調用io_service :: run(),並且您要在主線程中調用socket::async_sendsocket::async_receive,則您的處理程序將在當前可用的任何後臺線程中執行。所以是的,所有的線程基本上被認爲是等價的,並且可以用於任何異步操作。

相關問題