2009-01-03 170 views
1

我最近在Windows平台上碰到了一个叫做IOCP的东西,更确切地说:输入/输出控制端口。这似乎是最有效的方式来编写您的服务器软件时,它需要同时容纳数千用户。 (纠正我,如果我错了,但每个线程,轮询和异步回调(每个回调线程)效率不够。)IOCP,跨平台库?

我想知道是否有任何第三方库可用实现这个概念。我知道win32 api为我们提供了CreateIoCompletionPort,FreeBSD有kqueue和linux,一般可以使用/ dev/epoll,它的作用有点类似......但是没有一个处理这种东西的跨平台库(例如boost :: thread)为了我?

+0

其实IOCP代表I/O完成端口不是'控制端口'。 – 2009-11-27 22:16:07

+0

你绝对没有错在线程每客户的奉献精神。您很快会遇到严重的上下文切换问题,通常在大多数操作系统的上千个客户端中(Windoze就是这方面的一个很好的例子)。 – WhozCraig 2012-09-03 06:05:38

回答

5

你看过boost :: asio吗? 我不确定它是否具备所有这些功能,但我相信这是它的目的之一。

1

libevent适用于多个* nix操作系统,也可在Windows上运行。

2

我知道这是对这个线程的最新回复,但对于那些对在Linux/UNIX和Windows上支持异步IO的x平台库感兴趣的用户,您可能需要查看libuv

libuv最初被设计为node.js中的基础性基础,但它已演变成为许多低级别,X平台的问题,包括异步IO,非阻塞TCP套接字&命名管道强大的抽象库, UDP,定时器,子进程产卵 ,高分辨率时间,线程池调度等。