2016-08-30 128 views
2

我正在編寫多線程TCP服務器,其中基於應用程序設計,我需要爲每個線程使用io_service多線程。Boost Asio將接受的套接字從一個io_service傳輸到另一個io_service

有了這種設計,我需要接受來自一個Thread/io_service的連接進行身份驗證過程(基於應用程序邏輯),然後將接受的連接傳輸到另一個Thread/io_service以開始從經過身份驗證的連接讀取長數據。因此問題是how transfer accepted connection from one io_service into another one

這是否有任何標準功能?

謝謝

回答

1

去基於一般的想法的答案。僞代碼爲:

create_io_service_pool(...); 
tcp::acceptor tcp_acceptor(accept_io_service, tcp::endpoint(tcp::v4(), 6069)); 
while (true) { 
    auto csocket = tcp::socket(get_io_service_from_pool()); 
    tcp_acceptor.accept(csocket); 
    /// Any async operation afterwords on csocket would be handled by the 
    /// io_service it got from `get_io_service_from_pool` function 
    /// which you can design as you wish..may be round-robin one for simplicity 
} 

我只是希望這是你在找什麼。

相關問題