发表于 2010-05-23, 7:13 PM.
发表在:
1.初始化Winsock
2.创建一个完成端口
3.根据服务器线程数创建一定量的线程数
4.准备好一个socket进行bind然后listen
5.进入循环accept等待客户请求
6.创建一个数据结构容纳socket和其他相关信息
7.将连进来的socket同完成端口相关联
8.投递一个准备接受的请求
以后就不断的重复5至8的过程
IO完成端口(英文简称IOCP)可能是Windows内核编程中最复杂,最难理解的内核概念。然而,它又是如此强大,以至于它是Windows平台上实现专业大流量服务器软件的唯一合理模型。没办法,难也得啃啊!那么IOCP真是那么难吗?如何理解IO完成端口模式?
1、完成端口是一个内核对象,其操作方式类似一个队列(从其行为分析得到结论,真正如何实现的,谁看了win2000核心代码的告知一声),每个IO对象(如socket, file等)HANDLE通过CreateIoCompletionPort函数与完成端口中的一个数据上下文结点相关联;若干个工作线程与该完成端口相关联,处理队列中结点收到的数据。
2、当用户提交异步IO请求后会立即返回,由完成端口监视IO请求完成的事件(例如:有客户端连接上线了,有数据收到了,请求发送的数据发送完毕了等事件。这可能是完成端口名字的来由),并将相关信息添加到IO对象相应结点的OVERLAPPED结构中;
3、与该完成端口相关联的工作线程可以通过GetQueuedCompletionStatus函数从完成端口队列中获取收到的IO数据;
4、需要结束服务时,使用PostQueuedCompletionStatus函数向完成端口发送NULL结构,使关联的工作线程退出。
上一篇:
收到哥们发来的站点看了下
下一篇:
c pascal php语法比较
|