我知道 epoll 和 io_context 是异步工作的。那么,你能告诉我这两者有什么区别吗?
你在 asio::io_context 中使用 epoll 吗?
最佳答案
POSIX 为我们提供了一套实用程序,可用于分派(dispatch)事件和监视文件描述符上的事件。这些实用程序之一是 epoll()
.
Boost ASIO 还为我们提供了一套实用程序,可用于调度事件和监视文件描述符上的事件。 io_context
听起来是这样的:某种 I/O 操作的上下文的“句柄”。通过 io_context
你可以poll()
事件(除其他外)。
它们是(在这个比较中)一个非常相似的任务的两个不同接口(interface)。然而,Boost ASIO 是一种抽象。是否使用epoll()
在引擎盖下实现它的魔力并不是我们真正需要或应该关注的事情,但它肯定有可能在 POSIX 系统上这样做。在 Windows 系统上,它可能会委托(delegate)给操作系统提供的其他东西。
一种观点认为跨平台抽象总是有帮助的,因此 Boost ASIO 技术是网络的不错选择。另一方面,有些人发现旧的 POSIX 实用程序更简单,其他程序员阅读他们的代码更熟悉(只要他们的目标平台支持它们);他们也不需要您发送依赖项。与任何事情一样,由您决定哪个最适合您的用例和受众。
关于c++ - epoll 和 boost::asio::io_context 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63765063/