[发明专利]在用户空间中建立线程之间的队列有效
申请号: | 201811330977.4 | 申请日: | 2018-11-09 |
公开(公告)号: | CN111176855B | 公开(公告)日: | 2023-10-27 |
发明(设计)人: | 李博杰;崔天一;王子博;白巍;张霖涛 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京世辉律师事务所 16093 | 代理人: | 李峥宇 |
地址: | 美国华*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用户 空间 建立 线程 之间 队列 | ||
1.一种计算机实现的方法,包括:
创建第一应用的第一线程以及第二应用的第二线程和第三线程;
在操作系统的用户空间中建立所述第一应用与所述第二应用之间的套接字连接,所述第一线程、第二线程以及第三线程共享所述套接字连接;以及
建立所述第一线程与所述第二线程之间的第一队列以及所述第一线程与所述第三线程之间的第二队列,所述第一队列不同于所述第二队列。
2.根据权利要求1所述的方法,其中建立所述第一线程与所述第二线程之间的第一队列以及所述第一线程与所述第三线程之间的第二队列包括:
在所述第一应用中的每个发送线程与所述第二应用中的每个接收线程之间建立单独的队列。
3.根据权利要求1所述的方法,还包括:
响应于所述第一线程从所述第二线程接收到接管请求,从所述第一线程向所述第三线程转发所述接管请求;以及
经由所述第一线程从所述第三线程向所述第二线程发送用于接管的令牌。
4.根据权利要求1所述的方法,还包括:
响应于所述第一应用发起用于创建子进程的系统调用(fork)操作:
为所述第一应用创建与所述第一线程对应的第四线程;
建立所述第一线程与所述第二线程之间的第一新队列以及所述第四线程与所述第二线程之间的第二新队列;以及
关闭所述第一线程与所述第二线程之间的所述第一队列。
5.根据权利要求1所述的方法,其中建立所述第一线程与所述第二线程之间的第一队列包括:
将所述第一线程与所述第二线程之间的多个连接合并到第一队列中,所述第一队列是用于传输所述多个连接的数据的单个队列并且支持从任何位置取回连接中的数据。
6.根据权利要求5所述的方法,还包括:
通过扫描所述第一队列来确定所述多个连接中存在待被读取的数据的连接。
7.根据权利要求1所述的方法,其中所述第一线程为发送线程,所述第二线程为接收线程,并且建立所述第一线程与所述第二线程之间的第一队列还包括:
建立所述第一线程与所述第二线程之间的紧急队列,所述第一队列用于传输数据和按序的控制命令,并且所述紧急队列用于传输带外控制命令;以及
响应于所述紧急队列中存在新消息,使得所述第二线程立即取回所述新消息。
8.根据权利要求7所述的方法,还包括:
响应于经由所述紧急队列从所述第一线程接收到用于触发垃圾回收的命令,扫描所述第一队列中空闲空间并且向所述第一队列的尾部移动消息。
9.一种计算设备,包括:
处理单元;
存储器,耦合至所述处理单元并且存储有指令,所述指令在由所述处理单元执行时执行以下动作:
创建第一应用的第一线程以及第二应用的第二线程和第三线程;
在操作系统的用户空间中建立所述第一应用与所述第二应用之间的套接字连接,所述第一线程、第二线程以及第三线程共享所述套接字连接;以及
建立所述第一线程与所述第二线程之间的第一队列以及所述第一线程与所述第三线程之间的第二队列,所述第一队列不同于所述第二队列。
10.根据权利要求9所述的设备,其中建立所述第一线程与所述第二线程之间的第一队列以及所述第一线程与所述第三线程之间的第二队列包括:
在所述第一应用中的每个发送线程与所述第二应用中的每个接收线程之间建立单独的队列。
11.根据权利要求9所述的设备,所述动作还包括:
响应于所述第一线程从所述第二线程接收到接管请求,从所述第一线程向所述第三线程转发所述接管请求;以及
经由所述第一线程从所述第三线程向所述第二线程发送用于接管的令牌。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811330977.4/1.html,转载请声明来源钻瓜专利网。