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

标签 c++ boost-asio epoll

我知道 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/

相关文章:

c++ - 如何解释 CDC::DrawText 返回负值?

c++ - boost asio 计时器不适用于阻塞读取调用

android - Asio 或 Boost.Asio 可以在 iPhone 或 Android 上运行吗?

linux - 套接字何时*确切*准备好写入?

multithreading - golang可以启动多线程来处理网络IO吗

c++ - epoll反向代理在编写客户端时卡住

c++ - 循环依赖通常会花费很多时间来编译吗?

c++ - 写入套接字后管道损坏

c++ - 提升 asio 写/读 vector

python - 如何使用 ctypes 将 python 列表传递给 C 函数 (dll)