[发明专利]Windows平台下实现单进程单线程完成端口的方法有效
申请号: | 202011038746.3 | 申请日: | 2020-09-28 |
公开(公告)号: | CN112114955B | 公开(公告)日: | 2021-05-14 |
发明(设计)人: | 吴建亮;胡鹏;符元湘 | 申请(专利权)人: | 广州锦行网络科技有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 北京精金石知识产权代理有限公司 11470 | 代理人: | 杨兰兰 |
地址: | 510095 广东省广州*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | windows 平台 实现 进程 线程 完成 端口 方法 | ||
本发明提供了一种Windows平台下实现单进程单线程完成端口的方法,属于计算机编程技术领域。该方法在使用完成端口时,在线程中使用GetQueuedCompletionStatus阻塞等待完成端口的事件发生,并根据GetQueuedCompletion Status参数中返回的信息处理相应的操作,这一过程放到主线程完成,同时使GetQueuedCompletionStatus不阻塞,在绑定完成端口时将线程数设置为1,从而实现单进程单线程完成端口。
技术领域
本发明涉及计算机编程技术领域,尤其涉及一种Windows平台下实现单进程单线程完成端口的方法。
背景技术
在网络通信模型中,涉及到几个概念,同步、异步、阻塞和非阻塞。同步函数一般指调用函数后,等到函数功能实现再返回,期间一直霸占的CPU,等待期间同一个线程无法执行其他函数。异步函数指调用函数后,不管函数功能是否实现,立马返回;通过回调函数等告知函数功能完成。调用某些函数阻塞是因为函数功能没有实现,主动放弃CPU,让其他线程的得以执行;当功能实现后,函数返回;调用某些函数不会进入阻塞,无论实现与否,都会返回结果。
Windows下面的网络通信模型主要有以下几种:
1.select模型,为定期检查模型。一个线程用于accept客户端的接入,一个线程用于select数据的收发。该模型接收客户端连接属于同步(阻塞)模式,数据收发属于异步模式。
2.WSAAsyncSelect模型,为窗口事件通知模型。在一个线程中,将客户端socket和hWnd窗口句柄的消息事件关联,通过FD类别事件来识别客户端socket以及数据的接收和发送。这是一种异步通信实现,可以为多线程,也可以为单线程。
3.WSAEventSelect模型,为事件对象通知(选择)模型。一个线程用于accept客户端接入,创建事件对象并关联到客户端socket描述符。另一个线程使用WSAWaitForMultipleEvents来等待事件发生并处理读写数据。该模型接收客户端连接属于同步(阻塞)模式,数据收发属于异步模式。
4.重叠Overlapped IO模型,为多线程重叠IO和事件对象完成通知。一个线程用于accept客户端的接入,参照上述3,创建事件对象并关联到客户端socket,使另一个线程通过WSAWaitForMultipleEvents,得到处理完成数据的关联事件对象。然后通过WSAGetOverlappedResult得到重叠IO事件返回的结果以进一步选择如何处理数据。该模型接收客户端连接属于同步(阻塞)模式,数据收发属于异步模式。
5.完成端口IO Completion Port模型,通过完成端口消息队列有效的管理外部和内部的线程池,进而提高网络通信效率的模型。创建线程池,然后,基于完成端口队列事件通知机制,利用重叠IO,等待内部IO完成之后,再通知到等待事件的线程池。这是一种完美的非阻塞的、异步的、超高效的网络通信模式。
现在存在着一个应用场景:需要创建多个进程,但是每个进程只使用一个主线程,并且需要使用类似完成端口的机制来尽最大可能提升网络数据收发的吞吐率。
基于这一应用场景,上面列举的网络通信模型的缺陷:
1.select模型,可以设置为非阻塞模式,但是需要不断轮询检测,效率较低,并且有数量限制,不建议使用。
2.WSAAsyncSelect模型,是一种异步非阻塞模式,但是网络IO效率明显低下。
3.WSAEventSelect模型,接入客户端是阻塞模式,无法应用。
4.重叠Overlapped IO模型,效率较高,但是需要阻塞等待事件,无法应用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州锦行网络科技有限公司,未经广州锦行网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011038746.3/2.html,转载请声明来源钻瓜专利网。