我对基于套接字的模型的图形表示和解释

时间:2010-11-12 17:53:17

标签: c++ sockets iocp io-completion-ports

http://img600.imageshack.us/img600/3567/graphicrepresentation.png

我的推理正确吗?如果是这样,有人可以告诉我,就像上面的方案一样, I / O完成端口如何工作?在我开始学习制作像MMORPG这样的高性能服务器之前,我想知道它是如何工作的。

2 个答案:

答案 0 :(得分:2)

有一个Dr Dobbs article

答案 1 :(得分:2)

使用IOCP,所有的send和recv调用都由一个线程池处理(一个小池通常很好),所以在其中绘制一个带有send / recv的盒子,上面有3个红点,下面有10,000个蓝点。

使用IOCP,您可以发出一系列重叠请求。一旦这些请求完成,它们就被放入队列(IOCP)中,服务该队列的线程可以删除它们并处理它们。因此,如果您有10,000个连接,并且只有一个读取待处理,那么当数据从每个客户端到达时,您将获得进入IOCP的读取完成。您的线程将被唤醒并将处理完成,它们可能会发出更多重叠读取,并且可能还会发出重叠写入。大多数情况下,当重叠写入完成时你不在乎(除非你小心;),因此完成处理只包括释放每个操作数据(即你刚刚发送给客户端的数据)并减少使用量依靠连接......

从我的free IOCP server framework页面链接到的文章更多地解释了这一点。