完成端口模型简介(zz)
来源:互联网 发布:阿里云官方 编辑:程序博客网 时间:2024/04/28 17:55
抽象出一个完成端口大概的处理流程:
1:创建一个完成端口。
2:创建一个线程A。
3:A线程循环调用GetQueuedCompletionStatus()函数来得到IO操作结果,这个函数是个阻塞函数。
4:主线程循环里调用accept等待客户端连接上来。
5:主线程里accept返回新连接建立以后,把这个新的套接字句柄用CreateIoCompletionPort关联到完成端口,然后发出一个异步的WSASend或者WSARecv调用,因为是异步函数,WSASend/WSARecv会马上返回,实际的发送或者接收数据的操作由WINDOWS系统去做。
6:主线程继续下一次循环,阻塞在accept这里等待客户端连接。
7:WINDOWS系统完成WSASend或者WSArecv的操作,把结果发到完成端口。
8:A线程里的GetQueuedCompletionStatus()马上返回,并从完成端口取得刚完成的WSASend/WSARecv的结果。
9:在A线程里对这些数据进行处理(如果处理过程很耗时,需要新开线程处理),然后接着发出WSASend/WSARecv,并继续下一次循环阻塞在GetQueuedCompletionStatus()这里。
归根到底概括完成端口模型一句话:
我们不停地发出异步的WSASend/WSARecv IO操作,具体的IO处理过程由WINDOWS系统完成,WINDOWS系统完成实际的IO处理后,把结果送到完成端口上(如果有多个IO都完成了,那么就在完成端口那里排成一个队列)。我们在另外一个线程里从完成端口不断地取出IO操作结果,然后根据需要再发出WSASend/WSARecv IO操作。
- 完成端口模型简介(zz)
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- Winsock 完成端口模型简介
- 【转】Winsock 完成端口模型简介
- 完成端口模型
- 完成端口模型代码
- 完成端口模型代码
- 海量数据分页
- 《大腕》——编程高手篇
- 献给70年代末,80年代初生人的好朋友们
- 端午思敏
- C++之父Bjarne Stroustrup的演讲:软件理想和历史
- 完成端口模型简介(zz)
- IO完成端口 (译自MSDN Platform SDK:Storage)
- 2006年5月26号 2点
- Solaris 技术文档
- Sun Solaris 技术文档
- jsp
- BYTE 数据类型
- 完成端口与高性能服务器程序开发(zz)
- 挖槽 发个文章还真不容易