【发布时间】:2011-02-17 04:22:16
【问题描述】:
使用 winsock,您可以配置套接字或单独的 I/O 操作以“重叠”。这意味着执行 I/O 的调用会立即返回,而实际操作由单独的工作线程异步完成。
Winsock 还提供“完成端口”。据我了解,完成端口充当句柄(套接字)的多路复用器。如果句柄不在 I/O 操作的中间,即如果它的所有 I/O 操作都完成,则可以将其解复用。
那么,关于我的问题... linux 是否支持完成端口,甚至支持套接字的异步 I/O?
【问题讨论】:
-
epoll是 Linux 最快的服务器编写方法。请注意,Linux 目前在 Internet 服务器市场上的份额比 Windows 更大。 -
@unixman83:我知道 epoll。我只是好奇,因为在 Linux 上提到了异步 I/O 支持,但我不完全确定是否特别支持套接字(BlackAura 证实了这一点)。附带说明一下,epoll 可能并非一直都是最好的解决方案(请参阅sheddingbikes.com/posts/1280829388.html)。
-
完成端口并不意味着多路复用套接字。它们对于单个套接字或文件句柄非常有用。它们是一种数据并行机制。它们的目的是允许多个线程处理从套接字或文件异步接收的数据。它们还用于线程池实现,例如 .NET。
标签: linux sockets asynchronous posix iocp