epoll和boost::asio::io_context有什么区别?

What is the difference between epoll and boost::asio::io_context?

我知道 epoll 和 io_context 是异步工作的。那么,你能告诉我这两者有什么区别吗?

你在asio::io_context里面使用epoll吗?

POSIX 为我们提供了一套实用程序,可用于调度事件和监视 activity 文件描述符。其中一个实用程序是 epoll().

Boost ASIO 还为我们提供了一套实用程序,可用于调度事件和监视 activity 文件描述符。 io_context 顾名思义:某种 I/O 操作上下文的“句柄”。通过 io_context,您可以 poll() 获得 activity(除其他外)。

它们是用于(在此比较中)基本相似任务的两个不同界面。然而,Boost ASIO 是一种抽象。它是否在引擎盖下使用 epoll() 来实现它的魔力并不是我们真正需要或应该关心的事情,但它肯定有可能在 POSIX 系统上这样做。在 Windows 系统上,它可能会委托给 OS 提供的其他东西。

一种观点认为,cross-platform 抽象总是有用的,因此 Boost ASIO 技术是联网的不错选择。另一方面,有些人发现旧的 POSIX 实用程序对于阅读他们代码的其他程序员来说更简单、更熟悉(只要他们的目标平台支持它们);他们也不要求您运送依赖项。与任何事情一样,由您决定哪一个最适合您的用例和受众。