CN115981731A - 适用于密码卡异步接口的轮询方法、代理和介质 - Google Patents
适用于密码卡异步接口的轮询方法、代理和介质 Download PDFInfo
- Publication number
- CN115981731A CN115981731A CN202211469667.7A CN202211469667A CN115981731A CN 115981731 A CN115981731 A CN 115981731A CN 202211469667 A CN202211469667 A CN 202211469667A CN 115981731 A CN115981731 A CN 115981731A
- Authority
- CN
- China
- Prior art keywords
- semaphore
- operation result
- result data
- data packets
- zero
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明提供一种适用于密码卡异步接口的轮询方法、代理和介质,所述方法包括以下步骤:步骤1,当接收到唤醒通知时,轮询线程退出阻塞状态;步骤2,获取计数信号量,在计数信号量为零时重新进入阻塞状态,否则将计数信号量减去预减个数;步骤3,查询接收内存中的运算结果数据包个数,若为零,则将计数信号量加上预减个数,若不为零,则继续执行步骤4;步骤4,比较运算结果数据包个数与预减个数,当运算结果数据包个数等于预减个数时,从接收内存中读取运算结果数据进行处理,并返回执行步骤2;否则,从接收内存中读取运算结果数据进行处理,并根据运算结果数据包个数与预减个数的差值调整计数信号量,返回执行步骤2。
Description
技术领域
本发明涉及一种轮询方法,具体的说,涉及了一种适用于密码卡异步接口的轮询方法、代理和介质。
背景技术
数据加解密、数据签名、数据验签等是网络安全中比较有效的数种保护手段,密码卡就是实现这些算法的典型硬件设备产品,提供这些算法的接口按照是否延时可以分为同步接口及异步接口,同步接口是指调用一次接口,需要等待返回,然后才能够执行后继程序,有个等待过程。异步接口是指调用一次接口,不需要等待返回,随时可以执行后继程序,即不需要等待。异步接口可以有效提供加解密服务,且性能更高。
随着对性能的要求越来越高,在实现操作系统及业务系统时,采用异步架构的方式也越来越多。如图1所示,异步架构业务系统是一种让CPU暂时搁置当前请求的响应,处理下一个请求,当通过轮询或其他方式得到回调通知后再开始执行的多任务并行处理的架构方式,它可以使处理流程化且最大程度地提高性能。当一个异步过程调用发出后,调用者不能立刻得到结果,实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。调用者在回调中非阻塞等待被调用者(密码卡)执行完成,整个过程都是非阻塞的。
通常轮询线程使用无限循环的方式实现,即不停的查询是否有回调通知。假设密码卡一直发送数据,而此时轮询线程没有延时或者延时太小,则会一直查询占用CPU,导致轮询线程的CPU占用率太高;如果轮询线程延时太大,则实时性不高,会影响密码卡硬件的性能。
为了解决以上存在的问题,人们一直在寻求一种理想的技术解决方案。
发明内容
本发明的目的是针对现有技术的不足,从而提供了一种适用于密码卡异步接口的轮询方法、代理和介质。
为了实现上述目的,本发明所采用的技术方案是:一种适用于密码卡异步接口的轮询方法,包括以下步骤:
步骤1,当接收到唤醒通知时,轮询线程退出阻塞状态,否则保持阻塞状态;
步骤2,获取计数信号量,在计数信号量为零时重新进入阻塞状态,否则将计数信号量减去预减个数,其中,预减个数为正整数;
步骤3,查询接收内存中的运算结果数据包个数,若为零,则将计数信号量加上预减个数进行复位,若不为零,则继续执行步骤4;
步骤4,比较运算结果数据包个数与预减个数,当运算结果数据包个数等于预减个数时,从接收内存中读取运算结果数据进行处理,并返回执行步骤2;否则,从接收内存中读取运算结果数据进行处理,并根据运算结果数据包个数与预减个数的差值调整计数信号量,返回执行步骤2。
根据本发明的一些实施例,根据运算结果数据包个数与预减个数的差值调整计数信号量包括:
计算运算结果数据包个数与预减个数的差值,当差值大于零时,将计数信号量减去差值;当差值小于零时,计算差值的绝对值,并将计数信号量加上差值的绝对值。
根据本发明的一些实施例,计数信号量初始值为零,发送线程每次发送待运算数据包后,调用一次计数信号量,将计数信号量的值加1。
根据本发明的一些实施例,发送线程首次将计数信号量的值加1时,向轮询线程发送唤醒通知。
根据本发明的一些实施例,若连续N次轮询过程中,运算结果数据包个数与预减个数的差值均大于零时,则将预减个数+1;若连续N次轮询过程中,运算结果数据包个数与预减个数的差值均小于零时,则将预减个数-1;其中N为正整数。
本发明还提供一种适用于密码卡异步接口的轮询代理,包括
唤醒模块,用于在接收到唤醒通知时,退出阻塞状态,否则保持阻塞状态;
预减模块,用于获取计数信号量,将计数信号量减去预减个数,其中,预减个数为正整数;
第一判断模块,用于查询接收内存中的运算结果数据包个数;
第一调整模块,用于在运算结果数据包个数为零时,将计数信号量加上预减个数进行复位;
运算结果处理模块,用于在运算结果数据包个数不为零时,从接收内存中读取运算结果数据进行处理;
第二判断模块,用于比较运算结果数据包个数与预减个数;
第二调整模块,用于在运算结果数据包个数不等于预减个数时,根据运算结果数据包个数与预减个数的差值调整计数信号量。
根据本发明的一些实施例,根据运算结果数据包个数与预减个数的差值调整计数信号量包括:
计算运算结果数据包个数与预减个数的差值,当差值大于零时,将计数信号量减去差值;当差值小于零时,计算差值的绝对值,并将计数信号量加上差值的绝对值。
本发明还提供一种终端,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如前述的方法。
本发明还提供一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如前述的方法。
本发明相对现有技术具有突出的实质性特点和显著的进步,具体的说,本发明能够协调密码卡硬件的性能和CPU性能之间的均衡关系:
(1)本发明轮询线程初始状态处于阻塞状态,当发送线程开始发送数据后,计数信号量从0变为1,此时轮询线程才会开始进行查询, CPU占用率低。
(2)一旦开始进行查询,则直到计数信号量再次变为0,轮询线程一直处于查询状态;整个过程中并未用到延时,实时性高,可以充分发挥密码卡的性能。
(3)处理过程中,基于接收的运算结果数据包个数动态的调整计数信号量,以便准确的获知当前待处理的待运算数据包的个数,实时获取当前的处理进度。
附图说明
图1是常见的异步架构业务系统示意图。
图2是本发明的流程示意图。
具体实施方式
下面通过具体实施方式,对本发明的技术方案做进一步的详细描述。
实施例1
如图2所示,本实施例提供一种适用于密码卡异步接口的轮询方法,包括以下步骤:
步骤1,当接收到唤醒通知时,轮询线程退出阻塞状态,否则保持阻塞状态;
步骤2,获取计数信号量,在计数信号量为零时重新进入阻塞状态,否则将计数信号量减去预减个数,其中,预减个数为正整数;
步骤3,查询接收内存中的运算结果数据包个数,若为零,则将计数信号量加上预减个数进行复位,若不为零,则继续执行步骤4;
步骤4,比较运算结果数据包个数与预减个数,当运算结果数据包个数等于预减个数时,从接收内存中读取运算结果数据进行处理,并返回执行步骤2;否则,从接收内存中读取运算结果数据进行处理,并根据运算结果数据包个数与预减个数的差值调整计数信号量,返回执行步骤2。
优选的,计数信号量初始值为零,发送线程每次发送待运算数据包后,调用一次计数信号量,将计数信号量的值加1;并且当发送线程首次将计数信号量的值加1时,向轮询线程发送唤醒通知。优选的,预减个数为1。
本实施例中,轮询线程初始状态处于阻塞状态,当发送线程开始发送数据后,计数信号量从0变为1,此时轮询线程才会开始进行查询, CPU占用率低。
在具体实施时,根据运算结果数据包个数与预减个数的差值调整计数信号量包括:
计算运算结果数据包个数与预减个数的差值,当差值大于零即运算结果数据包个数大于预减个数,说明计数信号量预减数量偏少,则将计数信号量减去差值,从而对计数信号量进行调整,使其与运算结果数据包个数保持一致;例如,当运算结果数据包个数为2,预减个数为1时,说明运算结果数据包个数比预期个数多一个,多接收了一个,此时需要将多的这一个数据包从计数信号量中减去。
当差值小于零时,即运算结果数据包个数小于预减个数,说明计数信号量预减数量偏少,则计算差值的绝对值,将计数信号量加上差值的绝对值,从而对计数信号量进行调整,使其与运算结果数据包个数保持一致;例如,当运算结果数据包个数为1,预减个数为2时,说明运算结果数据包个数比预期个数少一个,少接收了一个,此时需要将少的这一个数据包再次添加到计数信号量中。
在具体实施时,定义计数信号量为sem_t类型的变量asyncsem,用来表示待运算数据包个数;定义函数sem_wait(asyncsem)为对计数信号量执行一次减1操作,定义函数函数sem_post(asyncsem)为对计数信号量执行一次加1操作;
每调用一次函数sem_wait(asyncsem),对计数信号量执行一次减1操作;当需要将计数信号量减去差值M时,则调用M次的函数sem_wait(asyncsem),其中,M为正整数;每调用一次函数sem_post(asyncsem),对计数信号量执行一次加1操作;当需要将计数信号量加上差值的绝对值时,则调用差值的绝对值次的函数sem_post(asyncsem)。
上述过程中,一旦开始进行查询,则直到计数信号量再次变为0,轮询线程一直处于查询状态;整个过程中并未用到延时,实时性高,可以充分发挥密码卡的性能。
实施例2
本实施例提供一种适用于密码卡异步接口的轮询代理,包括
唤醒模块,用于在接收到唤醒通知时,退出阻塞状态,否则保持阻塞状态;
预减模块,用于获取计数信号量,将计数信号量减去预减个数,其中,预减个数为正整数;
第一判断模块,用于查询接收内存中的运算结果数据包个数;
第一调整模块,用于在运算结果数据包个数为零时,将计数信号量加上预减个数进行复位;
运算结果处理模块,用于在运算结果数据包个数不为零时,从接收内存中读取运算结果数据进行处理;
第二判断模块,用于比较运算结果数据包个数与预减个数;
第二调整模块,用于在运算结果数据包个数不等于预减个数时,根据运算结果数据包个数与预减个数的差值调整计数信号量。
在具体实施时,根据运算结果数据包个数与预减个数的差值调整计数信号量包括:
计算运算结果数据包个数与预减个数的差值,当差值大于零时,将计数信号量减去差值;当差值小于零时,计算差值的绝对值,并将计数信号量加上差值的绝对值。
具体的,计数信号量初始值为零,发送线程每次发送待运算数据包后,调用一次计数信号量,将计数信号量的值加1;发送线程首次将计数信号量的值加1时,向轮询线程发送唤醒通知。
实施例3
本实施例提供一种终端,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如实施例1或实施例2所述的方法。
实施例4
本实施例提供一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如实施例1或实施例2所述的方法。
以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。
在本说明书的描述中,参考术语“一种实施例”、“一些实施例”、“优选实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。
此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
Claims (10)
1.一种适用于密码卡异步接口的轮询方法,其特征在于,包括以下步骤:
步骤1,当接收到唤醒通知时,轮询线程退出阻塞状态,否则保持阻塞状态;
步骤2,获取计数信号量,在计数信号量为零时重新进入阻塞状态,否则将计数信号量减去预减个数,其中,预减个数为正整数;
步骤3,查询接收内存中的运算结果数据包个数,若为零,则将计数信号量加上预减个数进行复位,若不为零,则继续执行步骤4;
步骤4,比较运算结果数据包个数与预减个数,当运算结果数据包个数等于预减个数时,从接收内存中读取运算结果数据进行处理,并返回执行步骤2;否则,从接收内存中读取运算结果数据进行处理,并根据运算结果数据包个数与预减个数的差值调整计数信号量,返回执行步骤2。
2.根据权利要求1所述的适用于密码卡异步接口的轮询方法,其特征在于,根据运算结果数据包个数与预减个数的差值调整计数信号量包括:
计算运算结果数据包个数与预减个数的差值,当差值大于零时,将计数信号量减去差值;当差值小于零时,计算差值的绝对值,并将计数信号量加上差值的绝对值。
3.根据权利要求1所述的适用于密码卡异步接口的轮询方法,其特征在于:计数信号量初始值为零,发送线程每次发送待运算数据包后,调用一次计数信号量,将计数信号量的值加1。
4.根据权利要求3所述的适用于密码卡异步接口的轮询方法,其特征在于:发送线程首次将计数信号量的值加1时,向轮询线程发送唤醒通知。
5.根据权利要求2或3或4所述的适用于密码卡异步接口的轮询方法,其特征在于:定义计数信号量为sem_t类型的变量asyncsem,用来表示待运算数据包个数;定义函数sem_wait(asyncsem)为对计数信号量执行一次减1操作,定义函数函数sem_post(asyncsem)为对计数信号量执行一次加1操作;
当对计数信号量的值减M操作时,调用M次函数sem_wait(计数信号量);当执行计数信号量的值加M操作时,调用M次函数sem_post(计数信号量);
其中,M为正整数。
6.一种适用于密码卡异步接口的轮询代理,其特征在于:包括
唤醒模块,用于在接收到唤醒通知时,退出阻塞状态,否则保持阻塞状态;
预减模块,用于获取计数信号量,将计数信号量减去预减个数,其中,预减个数为正整数;
第一判断模块,用于查询接收内存中的运算结果数据包个数;
第一调整模块,用于在运算结果数据包个数为零时,将计数信号量加上预减个数进行复位;
运算结果处理模块,用于在运算结果数据包个数不为零时,从接收内存中读取运算结果数据进行处理;
第二判断模块,用于比较运算结果数据包个数与预减个数;
第二调整模块,用于在运算结果数据包个数不等于预减个数时,根据运算结果数据包个数与预减个数的差值调整计数信号量。
7.根据权利要求6所述的适用于密码卡异步接口的轮询代理,其特征在于,根据运算结果数据包个数与预减个数的差值调整计数信号量包括:
计算运算结果数据包个数与预减个数的差值,当差值大于零时,将计数信号量减去差值;当差值小于零时,计算差值的绝对值,并将计数信号量加上差值的绝对值。
8.根据权利要求6所述的适用于密码卡异步接口的轮询代理,其特征在于,计数信号量初始值为零,发送线程每次发送待运算数据包后,调用一次计数信号量,将计数信号量的值加1;发送线程首次将计数信号量的值加1时,向轮询线程发送唤醒通知。
9.一种终端,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-5任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211469667.7A CN115981731A (zh) | 2022-11-22 | 2022-11-22 | 适用于密码卡异步接口的轮询方法、代理和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211469667.7A CN115981731A (zh) | 2022-11-22 | 2022-11-22 | 适用于密码卡异步接口的轮询方法、代理和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115981731A true CN115981731A (zh) | 2023-04-18 |
Family
ID=85957082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211469667.7A Pending CN115981731A (zh) | 2022-11-22 | 2022-11-22 | 适用于密码卡异步接口的轮询方法、代理和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115981731A (zh) |
-
2022
- 2022-11-22 CN CN202211469667.7A patent/CN115981731A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8006005B2 (en) | Centralized polling service | |
CN110276182B (zh) | Api分布式限流的实现方法 | |
US9762690B2 (en) | Push notification delivery system | |
EP2506147A2 (en) | Epoll optimisations | |
CN109189509B (zh) | 接口的调用方法、接口调用的响应方法及服务器 | |
WO2009129732A1 (zh) | 一种分布式调用消息的方法和装置 | |
CN113422842B (zh) | 一种考虑网络负载的分布式电力用电信息数据采集系统 | |
CN111107012B (zh) | 一种多维度集中流量的控制方法及系统 | |
US6542950B1 (en) | Self-adaptive processor overload control system | |
CN111314429B (zh) | 一种网络请求处理系统和方法 | |
CN105978821A (zh) | 网络拥塞避免的方法及装置 | |
CN110519388B (zh) | 区块链请求的处理方法、装置、电子设备及可读存储介质 | |
CN111131499A (zh) | 并发和异步任务处理方法及其设备 | |
Gopalakrishnan et al. | A real-time upcall facility for protocol processing with QoS guarantees | |
CN111835797A (zh) | 一种数据处理方法、装置及设备 | |
CN115981731A (zh) | 适用于密码卡异步接口的轮询方法、代理和介质 | |
CN116627615A (zh) | 一种任务处理方法、装置、电子设备和存储介质 | |
CN110290139B (zh) | 消息传输方法及装置 | |
CN111274047A (zh) | 信息处理方法、终端、系统、计算机设备和存储介质 | |
CN110909359A (zh) | 基于双系统架构的通信方法及终端设备 | |
CN114371935A (zh) | 网关处理方法、网关、设备及介质 | |
US7216349B2 (en) | System and method for triggering message queue applications | |
US20080126649A1 (en) | Low latency mechanism for asynchronously running a code segment on a processor in a remote computer by transmitting a special network packet or datalink frame that causes a hardware interrupt | |
WO2017129228A1 (en) | Technique for determining a load of an application | |
CN117499311A (zh) | 分布式限流方法、装置、设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |