- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
iocp模型总结(转)(IOCP model summary (turn))
iocp模型总结(转)(IOCP model summary (turn))
iocp模型总结 (转) iocp (i / a completion port, i / o完成端口) 是性能最好的一种i / o模型.它是应用程序使用线程池处理异步i / o请求的一种机制.在处理多个并发的异步i / o请求时, 以往的模型都是在接收请求是创建一个线程来应答请求.这样就有很多的线程并行地运行在系统中.而这些线程都是可运行的, windows内核花费大量的时间在进行线程的上下文切换, 并没有多少时间花在线程运行上.再加上创建新线程的开销比较大, 所以造成了效率的低下.
调用的步骤如下:
抽象出一个完成端口大概的处理流程:
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操作.
而iocp模型是事先开好了n个线程, 存储在线程池中, 让他们hold.然后将所有用户的请求都投递到一个完成端口上, 然后n个工作线程逐一地从完成端口中取得用户消息并加以处理.这样就避免了为每个用户开一个线程.既减少了线程资源, 又提高了线程的利用率.
完成端口模型是怎样实现的呢? 我们先创建一个完成端口 (:: createiocompletioport ()).然后再创建一个或多个工作线程, 并指定他们到这个完成端口上去读取数据.
We associate a remote connection to the socket handle completion port (or:: CreateIoCompletionPort ()). Everything is OK.
What do the work thread? The first is called: GetQueuedCompletionStatus () function in the associated with the completion of all the complete socket port waiting for I/O. To determine what type of I/O completed. Generally speaking, there are three types of I/O, OP_ACCEPT, OP_READ and OP_WIRTE. We read the data into the data buffer, then delivery of one or more of the same type (I/O), AcceptEx (:::: WSARecv:: WSASend (), ()). To read the data, we can according to their own needs to make corresponding processing.
Therefore, we need a OVERLAPPED (overlapping I/O per-I/O data structure) custom for the f
您可能关注的文档
- c语言温度测试程序(C temperature testing procedures).doc
- c语言的知识点复习资料(C language knowledge review).doc
- c语言知识点(C language knowledge).doc
- c语言的用途(The use of C language).doc
- c语言程序教程(C language programming tutorial).doc
- c语言程序开发范例宝典(C language programming book examples).doc
- c语言程序百例1-10 - c语言(Cases of C language program 1-10 - C language).doc
- c语言程序考试设计例题,,(C language program design examples of examination,,).doc
- c语言程序设计(清华郑莉 安颍莲)chap3(C programming language (Tsinghua Zheng Lian Ying Lian) chap3).doc
- c语言程序设计(清华郑莉 安颍莲)chap6(C programming language (Tsinghua Zheng Lian Ying Lian) chap6).doc
最近下载
- 内部控制岗位职责详解.pdf VIP
- (外研版2024新教材)英语三年级上册 Unit 1 作业练习设计.docx
- 黄芪多糖提取工艺优化及抗氧化活性的研究.doc
- YBT4001.1-2019 钢格栅板及配套件 第1部分:钢格栅板.pdf VIP
- 人教版小学四年级数学上册《第四单元 三位数乘两位数》大单元整体教学设计[2022课标].pdf
- 移动集团HCIP-云售前解决方案高级工程师培训认证题库.docx
- 印刷行业样品承认书.pdf VIP
- 标准图集-北京市房屋建筑抗震节能综合改造图集 柱、圈梁、钢拉杆加固分册.pdf VIP
- 采购项目质量保证措施.docx VIP
- 2021健康照护师复习题库【附答案】.docx
文档评论(0)