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

4

我知道epoll和io_context都是异步工作的,那么你能告诉我它们之间的区别吗?

你是否在asio::io_context中使用了epoll?

1个回答

6

POSIX提供了一组实用的工具来调度事件和监视文件描述符上的活动,其中之一是epoll()

Boost ASIO也提供了一组实用的工具来调度事件和监视文件描述符上的活动。 io_context就像它听起来的那样:一种某些I/O操作的上下文的 "句柄"。通过一个io_context,你可以poll()活动(除其他事项外)。

它们是两个不同的接口,用于(在本次比较中)类似的任务。然而,Boost ASIO是一个抽象层。它是否在底层使用epoll()来实现其魔力并不是我们需要或应该关注的事情,但在POSIX系统上它肯定是可能这么做的。在Windows系统上,它可能会委托给操作系统提供的其他东西。

有一种思想认为,跨平台抽象总是有帮助的,因此Boost ASIO技术是网络编程的好选择。另一方面,一些人发现旧的POSIX实用程序更简单且更熟悉于阅读他们的代码的其他程序员(只要他们的目标平台支持它们);它们也不需要你发送依赖项。像任何事情一样,由您来决定哪个最适合您的用例和受众。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接