2009-01-03 129 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,定時器,子進程產卵 ,高分辨率時間,線程池調度等。