一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

多线程异步转同步的消息处理方法、终端、介质及系统与流程

2022-04-02 05:25:47 来源:中国专利 TAG:


1.本发明涉及计算机通信技术领域,具体涉及一种多线程异步转同步的消息处理方法、终端、介质及系统。


背景技术:

2.在网络、串口等全双工通信中,读线程和写线程通常是异步通信的。所谓异步通信,指的是发送方发出数据后,不等待接收方发回反应,便发送下一个数据包。但在很多实际应用场景中,要求必须采用同步通信方式,即必须收到该命令的返回消息后,才能执行下一条命令。
3.为了满足实际应用场景中同步通信的需求,现有技术中可采用同步锁实现异步转同步的功能。但当发生多线程同步请求时,同步锁将无法解锁,难以实现异步到同步的转换。


技术实现要素:

4.针对上述技术缺陷,本发明实施例的目的在于提供一种多线程异步转同步的消息处理方法、终端、介质及系统。
5.为实现上述目的,第一方面,本发明实施例提供了一种多线程异步转同步的消息处理方法,适用于全双工异步通信,包括:
6.通过写线程发送请求消息或请求命令至服务器;
7.根据所述请求消息或请求命令生成收集器;所述收集器包括消息过滤器及阻塞队列,所述阻塞队列用于实现所述写线程阻塞;其中,每一条所述请求消息或请求命令对应一收集器;
8.将多个所述收集器加入预先创建的路由器;
9.通过读线程读取所述服务器发送的每一条返回消息,并将所述返回消息发送至所述路由器;
10.通过所述路由器遍历所有收集器的消息过滤器,以判断所述返回消息是否为所述请求消息或请求命令的返回消息;
11.若是,则将所述返回消息压入所述阻塞队列,解除所述写线程的阻塞,使得所述写线程获取所述返回消息,从而实现读写线程的异步转同步。
12.在本技术的某些具体实施方式中,所述写线程获取所述返回消息之后,所述方法还包括:
13.将所述路由器中所述返回消息对应的收集器清除。
14.在本技术的某些具体实施方式中,判断所述返回消息是否为所述请求消息的返回消息,具体为:
15.通过所述消息过滤器,按照自定义规则判断所述返回消息是否为所述请求消息的返回消息;所述自定义规则包括消息类型。
16.作为本技术的一种优选实施方式,所述方法还包括:
17.在预设时间内,若所述阻塞队列未收到所述返回消息,则对所述发送消息进行超时处理。
18.第二方面,本发明实施例提供了一种多线程异步转同步的消息处理设备,适用于全双工异步通信,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法步骤。
19.第三方面,本发明实施例提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法步骤。
20.第四方面,本发明实施例提供了另一种多线程异步转同步的消息处理终端,适用于全双工异步通信,包括:
21.发送单元,用于通过写线程发送请求消息或请求命令至服务器;
22.生成单元,用于根据所述请求消息或请求命令生成收集器;所述收集器包括消息过滤器及阻塞队列,所述阻塞队列用于实现所述写线程阻塞;其中,每一条所述请求消息或请求命令对应一收集器;
23.加入单元,用于将多个所述收集器加入预先创建的路由器;
24.读取单元,用于通过读线程读取服务器发送的每一条返回消息,并将所述返回消息发送至所述路由器;
25.遍历单元,用于通过所述路由器遍历所有收集器的消息过滤器,以判断所述返回消息是否为所述请求消息或请求命令的返回消息;
26.同步单元,用于当所述返回消息为所述请求消息或请求命令的返回消息时,将所述返回消息压入所述阻塞队列,解除所述写线程的阻塞,使得所述写线程获取所述返回消息。
27.作为本技术的一种优选实施方式,该消息处理终端还包括:
28.清除单元,用于将所述路由器中所述返回消息对应的收集器清除;
29.超时处理单元,用于在预设时间内,若所述阻塞队列未收到所述返回消息,则对所述发送消息进行超时处理。
30.第五方面,本发明实施例还提供了一种多线程异步转同步的消息处理系统,适用于全双工异步通信,包括消息处理终端及服务器;其中,该消息处理终端如上述第二或第四方面所述。
31.实施本发明实施例,针对全双工异步通信的多线程应用场景,通过设计一个路由器,根据每次请求生成一个收集器及消息过滤器,该收集器中包括一用于阻塞写线程的阻塞队列;当收到消息时,由路由器遍历所有收集器,通过消息过滤器判断所收到的消息是否为请求消息对应的返回消息,若是,则解除写线程的锁定,使得写线程可读取返回消息,从而实现多并发下高效的异步到同步的转换。
附图说明
32.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体
实施方式或现有技术描述中所需要使用的附图作简单地介绍。
33.图1是本发明实施例提供的多线程异步转同步的消息处理方法的示意流程图;
34.图2是写开始后的流程图;
35.图3是读开始后的流程图;
36.图4是本发明实施例提供的多线程异步转同步的消息处理系统的结构图;
37.图5是图4中消息处理终端的一种结构示意图;
38.图6是图4中消息处理终端的另一种结构示意图。
具体实施方式
39.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
40.本发明的发明构思是:针对全双工异步通信的多线程并发应用场景,设计一个路由器(router),每次请求都生成一个收集器(collector),并将其添加到路由器中,且该收集器中设计一个消息过滤器(filter);收到消息时,路由器遍历所有收集器的消息过滤器,由消息过滤器判断当条消息是否为当前收集器的返回消息,若是,则解除写线程的阻塞,使其可读取返回结果,从而实现多并发的高效的异步转同步的功能。
41.请参考图1,本发明实施例所提供的多线程异步转同步的消息处理方法,可以包括如下步骤:
42.s101,创建一个路由器。
43.s102,通过写线程发送请求消息或请求命令至服务器。
44.s103,根据请求消息或请求命令生成收集器,该收集器包括消息过滤器。
45.具体地,每一条消息或请求命令会生成一个收集器,当多条线程并发时,将会生成多个收集器。前述创建的路由器,主要用于收集所有的收集器。且,每一收集器里会实现一个阻塞队列,用于实现写线程的阻塞以及后续返回消息的接收。
46.s104,将多个收集器加入路由器。
47.其中,路由器具有读写共享功能,因此必须将收集器加入路由器,从而为后续收到返回消息后、路由器访问消息过滤器提供基础。
48.s105,通过读线程读取服务器发送的每一条返回消息,并将返回消息发送至路由器。
49.s106,通过路由器遍历所有收集器的消息过滤器,以判断返回消息是否为请求消息或请求命令的返回消息;
50.s107,若是,则将返回消息压入阻塞队列,解除写线程的阻塞,使得写线程获取返回消息,从而实现读写线程之间异步到同步的转换。
51.具体地,读线程中读到每一条消息都交由路由器(router)处理,遍历所有收集器(collector)的消息过滤器(filter)判断此条消息是否是当前收集器(collector)返回消息,如果“是”则压入阻塞队列,写线程解除阻塞,并获取返回消息,清除路由器(router)里的收集器(collector),整个流程结束,“否”则跳过。如果在规定时间内未获取到返回消息,
则按超时处理,抛出超时异常。
52.其中,消息过滤器(filter)判断此条消息是否是当前收集器(collector)返回消息,具体为:消息过滤器按照自定义规则(例如消息类型)判断返回消息是否为请求消息的返回消息。举例来说,如启动消息的id为0x01,服务器对应的返回消息id为0x02,则可以在filter里判断返回消息id是否为0x02,若是,则将返回消息压入阻塞队列,解除写线程阻塞,反之,则跳过,继续判断下一条返回消息。
53.为更好地理解本发明实施例,并基于图1中对方法流程的描述,下面根据图2和图3,分别就写和读开始后的流程进行描述。
54.请参考图2,写线程发送消息后,根据每一请求生成一对应的收集器,将该收集器加入路由器,接着创建阻塞队列以等待数据返回。在此处,本实施例中设置超时异常机制,即若规定时间内未收到发送消息的返回消息,则对该条发送消息进行超时处理,抛出超时异常的提示信息。
55.请参考图3,服务器返回消息后,读线程读取信息并将其交由路由器,路由器遍历所有收集器,当前消息过滤器判断该条消息是否为发送消息的返回消息,若是,则将返回消息压入收集器的阻塞队列,并判断是否遍历结束,若不是,则直接判断是否遍历结束。若遍历结束,则读取下一条返回消息,若遍历未结束,则采用下一消息过滤器继续判断该条消息是否为发送消息的返回消息。
56.从以上描述可以得知,实施上述方法,针对全双工异步通信的多线程应用场景,通过设计一个路由器,根据每次请求生成一个收集器及消息过滤器,该收集器中包括一用于阻塞写线程的阻塞队列;当收到消息时,由路由器遍历所有收集器,通过消息过滤器判断所收到的消息是否为请求消息对应的返回消息,若是,则解除写线程的锁定,使得写线程可读取返回消息,从而实现多并发下高效的异步到同步的转换。
57.进一步地,通过上述自定义的消息过滤器,可以很方便地实现各种消息类型的使用。且,本发明实施例的消息处理方法在多线程运行时,消息过滤器只过滤发送消息的返回消息,并不会影响其它消息。
58.进一步地,本发明实施例所提供的消息处理方法,可以在多种场景下使用,例如网络通信、蓝牙socket通信以及串口通信等。
59.基于相同的发明构思,本发明实施例提供了一种多线程异步转同步的消息处理系统,其适用于全双工异步通信。如图4所示,该系统包括消息处理终端100及服务器200。
60.作为本技术的一种优选实施例,如图5所示,该消息处理终端100包括:
61.发送单元10,用于通过写线程发送请求消息或请求命令至服务器;
62.生成单元11,用于根据所述请求消息或请求命令生成收集器;所述收集器包括消息过滤器及阻塞队列,所述阻塞队列用于实现所述写线程阻塞;其中,每一条所述请求消息或请求命令对应一收集器;
63.加入单元12,用于将多个所述收集器加入预先创建的路由器;
64.读取单元13,用于通过读线程读取服务器发送的每一条返回消息,并将所述返回消息发送至所述路由器;
65.遍历单元14,用于通过所述路由器遍历所有收集器的消息过滤器,以判断所述返回消息是否为所述请求消息或请求命令的返回消息;
66.同步单元15,用于当所述返回消息为所述请求消息或请求命令的返回消息时,将所述返回消息压入所述阻塞队列,解除所述写线程的阻塞,使得所述写线程获取所述返回消息。
67.进一步地,该消息处理终端100还包括清除单元,用于将所述路由器中所述返回消息对应的收集器清除。
68.进一步地,该消息处理终端100还包括超时处理单元,用于在预设时间内,若所述阻塞队列未收到所述返回消息,则对所述发送消息进行超时处理。
69.可选地,在本发明的另一优选实施例中,如图6所示,该消息处理终端100可以包括:一个或多个处理器101、一个或多个输入设备102、一个或多个输出设备103和存储器104,上述处理器101、输入设备102、输出设备103和存储器104通过总线105相互连接。存储器104用于存储计算机程序,所述计算机程序包括程序指令,所述处理器101被配置用于调用所述程序指令执行上述方法实施例部分的方法。
70.应当理解,在本发明实施例中,所称处理器101可以是中央处理单元(central processing unit,cpu)。该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
71.输入设备102可以包括键盘等,输出设备103可以包括显示器(lcd等)、扬声器等。
72.该存储器104可以包括只读存储器和随机存取存储器,并向处理器101提供指令和数据。存储器104的一部分还可以包括非易失性随机存取存储器。例如,存储器104还可以存储设备类型的信息。
73.具体实现中,本发明实施例中所描述的处理器101、输入设备102、输出设备103可执行本发明实施例提供的多线程异步转同步的消息处理方法实施例中所描述的实现方式,在此不再赘述。
74.需要说明的是,本发明实施例中多线程异步转同步的消息处理系统及其设备的具体工作流程及相关细节,请参考前述方法实施例部分,在此不再赘述。
75.进一步地,对应于前述多线程异步转同步的消息处理方法及设备,本发明实施例还提供了一种可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时实现:上述多线程异步转同步的消息处理方法。
76.所述计算机可读存储介质可以是前述任一实施例所述的系统的内部存储单元,例如系统的硬盘或内存。所述计算机可读存储介质也可以是所述系统的外部存储设备,例如所述系统上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述计算机可读存储介质还可以既包括所述系统的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述系统所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
77.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件
和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
78.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
79.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
80.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
81.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
82.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献