[发明专利]阻塞式事件通知方法及装置有效
申请号: | 202210146335.9 | 申请日: | 2022-02-17 |
公开(公告)号: | CN114697194B | 公开(公告)日: | 2023-07-14 |
发明(设计)人: | 李丹;李峻峰 | 申请(专利权)人: | 清华大学 |
主分类号: | H04L41/0654 | 分类号: | H04L41/0654;H04L69/30;H04L69/16;H04L9/40;G06F11/30 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 谢志超 |
地址: | 100084 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 阻塞 事件 通知 方法 装置 | ||
本发明提供一种阻塞式事件通知方法及装置,方法包括:根据应用程序发起的第一接口调用请求,向接口兴趣队列中添加待监听文件,将为网络套接字的待监听文件添加至用户态协议栈的监听队列中;根据应用程序发起的第二接口调用请求,判断接口兴趣队列中是否有网络套接字,在接口兴趣队列中有网络套接字且用户态协议栈的监听队列中待监听文件无待通知事件时,创建先入先出队列;先入先出队列中无待通知事件;对先入先出队列进行监听,根据监听结果,使应用程序进入阻塞状态或唤醒状态;在应用程序进入唤醒状态时,向应用程序发送待通知事件。该方法能够使用户态事件聚合通知等待接口支持阻塞式语义,提高了用户态协议栈对现有应用程序的兼容性。
技术领域
本发明涉及信息通信技术领域,尤其涉及一种阻塞式事件通知方法及装置。
背景技术
数据中心服务器运行的传统网络应用主要通过Linux内核来监听并获取新事件,为了对Linux内核的协议栈进行优化,基于高性能数据包收发框架开发的用户态协议栈应运而生。
然而,对于用户态协议栈来说,由于用户态协议栈和应用程序同时运行在用户态,用户态协议栈没有权限阻塞或唤醒应用程序,导致用户态协议栈提供的用户态事件聚合通知等待接口无法支持阻塞式语义。
发明内容
本发明提供一种阻塞式事件通知方法及装置,用以解决现有技术中用户态事件聚合通知等待接口无法支持阻塞式语义的缺陷。
第一方面,本发明提供一种阻塞式事件通知方法,该方法包括:
根据应用程序发起的第一接口调用请求,向接口兴趣队列中添加待监听文件,并将为网络套接字的待监听文件添加至用户态协议栈的监听队列中;
根据应用程序发起的第二接口调用请求,判断所述接口兴趣队列中是否有网络套接字,在所述接口兴趣队列中有网络套接字,且所述用户态协议栈的监听队列中待监听文件无待通知事件时,创建先入先出队列;其中,所述先入先出队列中无待通知事件;
对所述先入先出队列进行监听,根据监听结果,使应用程序进入阻塞状态或唤醒状态;
在应用程序进入唤醒状态时,向应用程序发送待通知事件。
根据本发明提供的阻塞式事件通知方法,对所述先入先出队列进行监听,根据监听结果,使应用程序进入阻塞状态或唤醒状态,包括:
通过内核态接口监听所述先入先出队列;
若所述先入先出队列无待通知事件,则通过所述内核态接口使应用程序进入阻塞状态;
若所述用户态协议栈的监听队列中所述待监听文件有待通知事件,则改变所述先入先出队列的当前状态,以向操作系统内核发出结束阻塞指令;
所述操作系统内核用于通过所述内核态接口接收所述结束阻塞指令,根据所述结束阻塞指令使应用程序结束阻塞并进入唤醒状态。
根据本发明提供的阻塞式事件通知方法,向接口兴趣队列中添加待监听文件之后,还包括:
将为非网络套接字的待监听文件添加至内核的监听队列中。
根据本发明提供的阻塞式事件通知方法,还包括:
根据应用程序发起的第二接口调用请求,判断所述接口兴趣队列中是否有网络套接字,在所述接口兴趣队列中无网络套接字,且所述内核的监听队列中所述待监听文件无待通知事件时,通过内核态接口使应用程序进入阻塞状态。
根据本发明提供的阻塞式事件通知方法,在所述接口兴趣队列中无网络套接字,且所述内核的监听队列中所述待监听文件无待通知事件时,通过内核态接口使应用程序进入阻塞状态之后,还包括:
若所述内核的监听队列中所述待监听文件有待通知事件,则通过所述内核态接口唤醒应用程序;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210146335.9/2.html,转载请声明来源钻瓜专利网。