Linux和I / O完成端口?

问题描述 投票:37回答:5

使用Winsock,您可以将套接字配置或将单独的I / O操作配置为“重叠”。这意味着执行I / O的调用将立即返回,而实际的操作则由单独的工作线程异步完成。

Winsock还提供“完成端口”。据我了解,完成端口充当句柄(套接字)的多路复用器。如果一个句柄不在I / O操作的中间,即它的所有I / O操作都为[[completed。],则可以对其进行多路分解。所以,我的问题... linux是否支持完成端口,甚至支持套接字的异步I / O?

使用Winsock,您可以将套接字配置或将单独的I / O操作配置为“重叠”。这意味着在完成实际操作的同时,将立即返回执行I / O的调用...

linux sockets asynchronous posix iocp
5个回答
80
投票
如果您正在寻找与IOCP完全一样的东西,您将找不到它,因为它不存在。

19
投票
[IOCP在各种UNIX平台上都被称为“异步I / O”:

9
投票
使用boost :: asio。把手放下。它具有适度的学习曲线,但是它是跨平台的,并且针对要编译的系统自动使用最佳的可用方法。根本没有理由不这样做。

0
投票
[从libevent上的Google阅读博客条目,您可以使用异步IO在Unix上实现IOCP语义,但不能使用IOCP直接实现异步IO语义,

0
投票
Boost ASIO使用epoll(Reactor模式)在Linux上实现Windows风格的IOCP(Proactor设计模式)。参见http://think-async.com/Asio/asio-1.5.3/doc/asio/overview/core/async.html
© www.soinside.com 2019 - 2024. All rights reserved.