C 在linux下,epoll实际上不赞成信号驱动I/O吗?

C 在linux下,epoll实际上不赞成信号驱动I/O吗?,c,linux,performance,io,portability,C,Linux,Performance,Io,Portability,书中说: 与信号驱动I/O相比,epoll提供了许多优势 我们可以放心地说: 信号驱动I/O实际上已经被epoll在linux下的实践中弃用了?如果我们假设“信号驱动I/O”是指POSIXaio(异步I/O)设施,使用aio\u sigevent通知方法,那么,可以公平地说,大多数需要异步操作的网络应用程序将倾向于epoll而不是aio。反对意见可能有点强烈 我想指出的是,磁盘I/O的aio功能比epoll更出色。aiocb结构允许为操作指定aio\u写入或aio\u读取命令的偏移量。因此,多个

书中说:

与信号驱动I/O相比,epoll提供了许多优势

我们可以放心地说:

信号驱动I/O实际上已经被epoll在linux下的实践中弃用了?

如果我们假设“信号驱动I/O”是指POSIX
aio
(异步I/O)设施,使用aio\u sigevent通知方法,那么,可以公平地说,大多数需要异步操作的网络应用程序将倾向于
epoll
而不是
aio
。反对意见可能有点强烈

我想指出的是,磁盘I/O的
aio
功能比
epoll
更出色。
aiocb
结构允许为操作指定
aio\u写入
aio\u读取
命令的偏移量。因此,多个文件I/O操作可以在文件中的多个不同偏移量上并行进行。带有
epoll
的传统文件描述符I/O通常会被序列化为流操作,其中下一个操作在之前完成的操作停止的地方继续进行。

如果我们假设“信号驱动I/O”是指POSIX
aio
(异步I/O)设施,则使用aio\u sigevent通知方法,那么,可以公平地说,大多数需要异步操作的网络应用程序将倾向于
epoll
而不是
aio
。反对意见可能有点强烈


我想指出的是,磁盘I/O的
aio
功能比
epoll
更出色。
aiocb
结构允许为操作指定
aio\u写入
aio\u读取
命令的偏移量。因此,多个文件I/O操作可以在文件中的多个不同偏移量上并行进行。带有
epoll
的传统文件描述符I/O通常会被序列化为流操作,其中下一个操作将在之前完成的操作停止的地方继续进行。

如果要在新应用程序中使用信号驱动I/O,您可能需要对此提出理由。我认为这样做是公平的假设信号驱动的I/O总是一个可怕的、支持率很低的难题,Unix真的希望您使用任何其他复用I/O的方法,即使是普通的老式
select
。然而,在某些情况下,在某种程度上使用信号是不可避免的(例如,多路复用等待子进程的等待I/O),我不知道epoll是否已经解决了所有这些问题,但如果已经解决了,那就太好了。我建议您将问题改述为“如果您不关心可移植性,并且正在充分利用Linux特定的API,例如
epoll
signalfd
,那么是否还有其他情况需要使用异步信号处理程序来处理?“这是一个合理的范围,非意见性问题。如果您打算在新的应用程序中使用信号驱动I/O,您可能需要提出理由。我认为可以公平地说,信号驱动I/O始终是一个可怕的、受支持较差的难题,Unix真的希望您使用任何其他多路复用I/O的方法,即使是普通的旧
选择
。然而,在某些情况下,在某种程度上使用信号是不可避免的(例如,多路复用等待子进程的等待I/O),我不知道epoll是否已经解决了所有这些问题,但如果已经解决了,那就太好了。我建议您将问题改述为“如果您不关心可移植性,并且正在充分利用Linux特定的API,例如
epoll
signalfd
,那么是否还有其他情况需要使用异步信号处理程序?”这是一个范围合理的非意见性问题。