2009-05-26 52 views
2

我已經浪費了兩天閱讀文檔boost :: asio 而我仍然不知道如何實現阻止select()像幾個函數套接字只使用一個線程(使用boost框架)。 boost :: asio的異步函數立即返回,所以需要在主線程中放置一些等待函數,直到async_read完成。 我懷疑這會耗費時間,但我真的受到性能要求的限制。如何實現基於POSIX select()的行爲,在boost :: asio

回答

2

io_service對象是select函數的抽象。設置您的套接字,然後在主線程中調用io_service::run成員函數。 io_service::run函數將阻塞,直到完成與io_service實例關聯的所有工作。您可以在異步處理程序中安排更多工作。

您還可以使用io_service::run_one,io_service::pollio_service::poll_one代替io_service::run