我知道epoll和io_context都是异步工作的,那么你能告诉我它们之间的区别吗?
你是否在asio::io_context中使用了epoll?
我知道epoll和io_context都是异步工作的,那么你能告诉我它们之间的区别吗?
你是否在asio::io_context中使用了epoll?
POSIX提供了一组实用的工具来调度事件和监视文件描述符上的活动,其中之一是epoll()
。
Boost ASIO也提供了一组实用的工具来调度事件和监视文件描述符上的活动。 io_context
就像它听起来的那样:一种某些I/O操作的上下文的 "句柄"。通过一个io_context
,你可以poll()
活动(除其他事项外)。
它们是两个不同的接口,用于(在本次比较中)类似的任务。然而,Boost ASIO是一个抽象层。它是否在底层使用epoll()
来实现其魔力并不是我们需要或应该关注的事情,但在POSIX系统上它肯定是可能这么做的。在Windows系统上,它可能会委托给操作系统提供的其他东西。
有一种思想认为,跨平台抽象总是有帮助的,因此Boost ASIO技术是网络编程的好选择。另一方面,一些人发现旧的POSIX实用程序更简单且更熟悉于阅读他们的代码的其他程序员(只要他们的目标平台支持它们);它们也不需要你发送依赖项。像任何事情一样,由您来决定哪个最适合您的用例和受众。