16

我将为我的项目使用 boost::asio lib。select()但是从本机套接字 C 库中对应哪个函数并不是很明显。asio里有这个吗?或者 boost 是否提供了一种替代方法来确定套接字是否准备就绪?

4

3 回答 3

8

的高级设计Boost.Asio基于Proactor设计模式。因此,您无需在select. 相反,为异步操作提交完成处理程序,当操作完成时 - 完成处理程序被调用。

于 2013-01-20T12:37:08.883 回答
8

该文档有一个特定部分用于将 BSD 套接字 API 调用映射到它们各自的 Asio 等效项

poll(), select(),pselect()

io_service::run(), io_service::run_one(), io_service::poll(), io_service::poll_one()

注意:结合异步操作。

请注意,每种方法之间存在细微差别io_service,选择正确的方法取决于您的应用程序设计。

于 2013-01-20T15:34:41.713 回答
5

Boost.Asio 确实使用 null_buffers 提供了类似选择的功能。https://stackoverflow.com/a/4686523/1134207解释更多。

于 2013-09-03T10:06:27.883 回答