CN109918209A - 一种线程间通信的方法和设备 - Google Patents
一种线程间通信的方法和设备 Download PDFInfo
- Publication number
- CN109918209A CN109918209A CN201910082083.6A CN201910082083A CN109918209A CN 109918209 A CN109918209 A CN 109918209A CN 201910082083 A CN201910082083 A CN 201910082083A CN 109918209 A CN109918209 A CN 109918209A
- Authority
- CN
- China
- Prior art keywords
- thread
- call instruction
- pointer
- reception pointer
- reception
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000006854 communication Effects 0.000 title claims abstract description 54
- 238000004891 communication Methods 0.000 title claims abstract description 53
- 239000000872 buffer Substances 0.000 claims abstract description 23
- 238000013507 mapping Methods 0.000 claims description 51
- 238000012545 processing Methods 0.000 claims description 38
- 238000012546 transfer Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 239000007853 buffer solution Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种线程间通信的方法和设备,用以解决目前模块间通信效率较低的问题。本发明实施例中第一线程在接收到第二线程的调用指令后确定所述第二线程的接收指针;所述第一线程通过所述接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上。上述方法所述第一线程的输出直接作为所述第二线程的输入,减少了模块间数据传输过程中数据的拷贝次数,提升了模块间通信的效率,同时,不在需要使用第三方缓存器,节省了系统资源。
Description
技术领域
本发明涉及计算机科学技术领域,特别涉及一种线程间通信的方法和设备。
背景技术
随着信息技术的发展,尤其是5G的提出,使得可移动或无边界的AR(扩增实境)与VR(虚拟现实)体验可以实现、手机可以随时云接入、云计算、自动驾驶方面5G能够和车的感知系统结合,但是这也将对模块间低延时通信的要求越来越高。
而目前多数程序设计的模块通信过程中方式主要是通过各个模块间使用第三方缓存器来实现彼此间的通信,例如某个模块把需要进行通信的数据拷贝到第三方缓存器中,然后另外一个模块再从第三方缓存器中将所述需要进行通信的数据拷贝到自身模块对应的缓存器中,这种模块间通信的方式,在传输的过程中会造成多次数据拷贝,与此同时,这种模块间的通信方式还会经常在模块间产生大量的信息传输,从而会使较大程度的降低程序的执行效率。
综上所述,目前模块间通信效率较低。
发明内容
本发明提供一种线程间通信的方法,用以解决目前模块间通信效率较低的问题。
第一方面,本发明实施例提供的一种线程间通信的方法包括:
第一线程在接收到第二线程的调用指令后确定所述第二线程的接收指针;
所述第一线程通过所述接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上。
上述方法,第一线程在接收到第二线程的调用指令后确定所述第二线程的接收指针,从而通过所述接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上,所述第一线程的输出直接作为所述第二线程的输入,减少了模块间数据传输过程中数据的拷贝次数,提升了模块间通信的效率,同时,不在需要使用第三方缓存器,节省了系统资源。
在一种可能的实现方式中,所述第一线程在接收到第二线程的调用指令后确定所述第二线程的接收指针,包括:所述第一线程根据所述调用指令中的接收指针信息确定所述第二线程的接收指针;或所述第一线程根据线程ID与指针标识的映射关系,确定所述调用指令中的线程ID对应的接收指针;或所述第一线程将所述调用指令中的线程ID发送给通信管理中心,并接收所述通信管理中心返回的所述线程ID对应的接收指针。
上述方法,所述第一线程可根据调用指令中直接通知的接收指针信息,或者根据ID与指针标识的映射关系,又或者接收通过通信管理中心返回的所述接收指针信息确定所述第二线程的接收指针,方式多样,适应性更强。
在一种可能的实现方式中,所述第一线程根据线程ID与指针标识的映射关系,确定所述调用指令中的线程ID对应的接收指针,包括:所述第一线程向通信管理中心发送调取请求;所述第一线程接收所述通信管理中心返回的线程ID与指针标识的映射关系;所述第一线程根据所述映射关系确定所述调用指令中包括的线程ID对应的接收指针。
上述方法,所述通信管理中心中存储有线程ID与指针标识的映射关系,通过所述通信管理中心实现对多个线程的输入输出进行统一管理,即在接收到所述第一线程的调用请求后,将线程ID与指针标识的映射关系通知所述第一线程,以使所述第一线程根据所述映射关系确定所述调用指令中包括的线程ID对应的接收指针。
第二方面,本发明实施例提供的一种线程间通信的方法包括:
第二线程向第一线程发送调用指令,以使所述第一线程通过所述第二线程的接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上;所述第二线程在接收到其他线程的调用指令后,从对应的存储位置上获取所述第一线程的数据并进行处理。
上述方法,第二线程向第一线程发送调用指令,以使所述第一线程通过所述第二线程的接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上,所述第一线程的输出直接作为所述第二线程的输入,减少了模块间数据传输过程中数据的拷贝次数,提升了模块间通信的效率,同时,不在需要使用第三方缓存器,节省了系统资源。
在一种可能的实现方式中,所述第二线程向第一线程发送调用指令,包括:所述第二线程向所述第一线程发送包括接收指针信息的调用指令;或所述第二线程向所述第一线程发送包括所述第二线程的线程ID的调用指令,以使所述第一线程根据线程ID与指针标识的映射关系确定线程ID对应的接收指针,或将所述调用指令中的线程ID发送给通信管理中心并接收所述通信管理中心返回的所述线程ID对应的接收指针。
上述方法,所述第二线程向所述第一线程发送包括接收指针信息的调用指令,或者所述第二线程向所述第一线程发送包括所述第二线程的线程ID的调用指令,以使所述第一线程根据线程ID与指针标识的映射关系确定线程ID对应的接收指针,方式多样,适应性更强。
在一种可能的实现方式中,所述方法还包括:所述第二线程将所述第二线程的线程ID与所述第二线程的接收指针的映射关系存储到通信管理中心。
上述方法,所述第二线程将所述第二线程的线程ID与所述第二线程的接收指针的映射关系存储到通信管理中心,从而使所述通信管理中心中存储有线程ID与指针标识的映射关系,更好的实现对多个线程的输入输出进行统一管理。
第三方面,本发明实施例还提供了一种线程间通信的设备,该终端包括:至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行上述第一方面的各实施例的功能。
第四方面,本发明实施例还提供了一种线程间通信的设备,该终端包括:至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行上述第二方面的各实施例的功能。
第五方面,本发明实施例还提供一种线程间通信的设备,该设备包括:确定模块和处理模块,该设备具有实现上述第一方面的各实施例的功能。
第六方面,本发明实施例还提供一种线程间通信的设备,该终端包括:发送模块和处理模块,该设备具有实现上述第二方面的各实施例的功能。
第七方面,本申请还提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述方法的步骤。
第八方面,本申请还提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现第二方面所述方法的步骤。
另外,第三方面至第八方面中任意一种实现方式所带来的技术效果可参见第一方面至第二方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种线程间通信的系统示意图;
图2为本发明实施例一种线程间通信的方法流程示意图;
图3为本发明实施例第一种线程间通信的设备的结构示意图;
图4为本发明实施例第二种线程间通信的设备的结构示意图;
图5为本发明实施例第三种线程间通信的设备的结构示意图;
图6为本发明实施例第四种线程间通信的设备的结构示意图;
图7为本发明实施例第一线程进行线程间通信的方法示意图;
图8为本发明实施例第二线程进行线程间通信的方法示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面对文中出现的一些词语进行解释:
(1)本申请实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
(2)本发明实施例所指的“通信管理中心”是本发明实施例中建立的一个管理中心,用于存储线程ID与指针标识的映射关系,对多个线程的输入输出进行统一管理。
(3)本发明实施例所指的“C++11原子锁”用于在多线程开发中,确保数据安全性,对数据的处理方式。
如图1所示,本发明实施例提供一种线程间通信的系统,该系统包括:
第一线程100,用于在接收到第二线程的调用指令后确定所述第二线程的接收指针;通过所述接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上;
第二线程101,用于向第一线程发送调用指令,以使所述第一线程通过所述第二线程的接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上;在接收到其他线程的调用指令后,从对应的存储位置上获取所述第一线程的数据并进行处理。
通过上述方法,第一线程在接收到第二线程的调用指令后确定所述第二线程的接收指针,从而通过所述接收指针对应的接收函数将所述第一线程的数据直接缓存到所述第二线程对应的存储位置上,因为所述第一线程将需要输出的数据不需要经过第三方缓存器进行中转,而是直接通过所述确定的接收指针,调用所述第二线程的接收函数,将所述需要输出的数据直接存储到所第二线程对应的存储位置中,实现了所述第一线程的输出直接作为所述第二线程的输入,减少了模块间数据传输过程中数据的拷贝次数,提升了模块间通信的效率,同时,不在需要使用第三方缓存器,节省了系统资源。
其中,本发明实施例中所述第二线程确定所述接收函数对应的接收指针,从而使所述第一线程通过所述接收指针,将所述第一线程的输出直接作为所述第二线程的输入。
进一步的,所述第二线程在需要调用所述第一线程时,需要向所述第一线程发送调用指令,其中,作为一种可选实施方式,本实施例中所述第二线程向所述第一线程发送的调用指令中包含的信息可以分为多种情况,具体可以但不限于如下情况。
包含信息1:所述第二线程向所述第一线程发送包括接收指针信息的调用指令。
当所述第二线程向所述第一线程发送调用指令时,所述第二线程直接将所述接收函数对应的接收指针发送给所述第一线程,从而使所述第一线程接收到调用指令后,直接根据所述调用指令中包含的信息,确定所述第二线程接收函数对应的接收指针。
包含信息2:所述第二线程向所述第一线程发送包括所述第二线程的线程ID的调用指令。
当所述第二线程向所述第一线程发送调用指令时,所述调用指令中包含所述第二线程的线程ID,从而使所述第一线程接收到调用指令后,根据所述调用指令中的线程ID确定是哪个接收线程,并根据所述线程ID与指针标识的映射关系确定接收到的调用指令中线程ID对应的接收指针,即确定了所述第二线程接收函数对应的接收指针。
进一步的,当有多个线程存在时,为了更好进行线程间的通信,本发明实施例中还可建立一个通信管理中心,用于存储线程ID与指针标识的映射关系。
因此,本发明实施例中所述第二线程还可将所述第二线程的线程ID与所述第二线程的接收指针的映射关系存储到通信管理中心,从而可以在所述第一线程接收到所述第二线程发送的调用指令后,根据所述调用指令中的线程ID,从所述通信管理中心中确定所述第二线程的接收指针。
进一步的,所述第一线程在接收到所述第二线程发送的调用指令后,需要确定所述第二线程的接收函数对应的接收指针,作为一种可选实施方式,本实施例中所述第一线程确定所述第二线程的接收指针时,可以采用不同的方式进行确定,具体可以但不限于采用如下确定方式。
确定方式1:所述第一线程根据所述调用指令中的接收指针信息确定所述第二线程的接收指针。若所述第二线程向所述第一线程发送的调用指令中包含所述第二线程接收函数对应的接收指针,则所述第一线程在接收到调用指令后,直接根据所述调用指令中包含的信息,确定所述第二线程接收函数对应的接收指针。
确定方式2:所述第一线程根据线程ID与指针标识的映射关系,确定所述调用指令中的线程ID对应的接收指针。
若所述第二线程向所述第一线程发送的调用指令中包含所述第二线程的线程ID,则所述第一线程在接收到所述调用指令后,可以确定所述第二线程的ID,并根据所述线程ID与指针标识的映射关系确定所述第二线程接收函数对应的接收指针。
进一步的,所述第一线程根据线程ID与指针标识的映射关系,确定所述调用指令中的线程ID对应的接收指针时,还可通过如下方式:
所述第一线程向通信管理中心发送调取线程ID与指针标识的映射关系的请求,所述通信管理中心收到所述调取请求后,向所述第一线程发送线程ID与指针标识的映射关系,所述第一线程接收所述通信管理中心返回的线程ID与指针标识的映射关系并根据所述映射关系确定所述调用指令中包括的线程ID对应的接收指针。
确定方式3:所述第一线程将所述调用指令中的线程ID发送给通信管理中心,并接收所述通信管理中心返回的所述线程ID对应的接收指针。
其中,所述第一线程在根据所述第二线程发送的调用指令中的信息确定所述第二线程的线程ID后,所述第二线程向通信管理中心发送所述线程ID,所述通信管理中心在接收到所述线程ID后,根据自身存储的线程ID与指针标识的映射关系确定所述线程ID对应的接收函数对应的接收指针,并将所述接收指针通知给所述第一线程,所述第一线程将接收到的所述通信管理中心通知的接收指针确定为所述第二线程的接收指针。
进一步的,所述第一线程通过所述接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上。
例如,假设所述第一线程为决策线程,所述第二线程为控制线程,当所述控制线程需要调用所述决策线程时,向所述决策线程发送包含所述控制线程ID的调用指令,所述决策线程在接收到所述调用指令后,将计算生成的结果通过所述调用指令中的所述控制线程ID找到对应的所述控制线程的接收函数对应的指针,从而所述决策线程通过所述接收指针调用所述控制模块的接收函数,把计算结果直接拷贝到所述控制模块对应的存储位置。
进一步的,本发明实施例中为实现数据安全,使用C++11原子锁进行数据保护。
需要说明的是,上面列举的方式只是举例说明,具体采用哪种方式可以由用户设置。为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面结合说明书附图,对本发明提供的一种线程间通信的方法流程选取一种场景进行介绍。
如图2所示,本发明实施例提供的一种线程间通信的方法,具体包括以下步骤:
其中,所述通信管理中心中已存储所述第二线程的线程ID与接收指针的映射关系。
步骤200、第二线程向第一线程发送调用指令,其中,所述调用指令中包含第二线程的线程ID;
步骤201、第一线程接收第二线程的调用指令;
步骤202、第一线程根据第二线程的调用指令确定第二线程的线程ID;
步骤203、第一线程调用通信管理中心的线程ID与接收指针的映射关系;
步骤204、第一线程根据所述通信管理中心的线程ID与接收指针的映射关系,确定第二线程对应的接收指针;
步骤205、第一线程通过所述接收指针对应的接收函数将第一线程的数据缓存到第二线程对应的存储位置上。
在一些可能的实施方式中,本发明实施例提供的一种线程间通信的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序代码在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书中描述的根据本发明各种示例性实施方式的线程间通信的方法中的步骤。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
根据本发明的实施方式的用于线程间通信的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在服务器设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被信息传输、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由周期网络动作系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备。
如图3所示,本发明实施例提供一种线程间通信的设备,该设备包括:至少一个处理单元300以及至少一个存储单元301,其中,所述存储单元301存储有程序代码,当所述程序代码被所述处理单元300执行时,使得所述处理单元300执行下列过程:
在接收到第二线程的调用指令后确定所述第二线程的接收指针;
通过所述接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上。
可选的,所述处理单元300具体用于:
根据所述调用指令中的接收指针信息确定所述第二线程的接收指针;或,
根据线程ID与指针标识的映射关系,确定所述调用指令中的线程ID对应的接收指针;或,
将所述调用指令中的线程ID发送给通信管理中心,并接收所述通信管理中心返回的所述线程ID对应的接收指针。
可选的,所述处理单元300具体用于:
向通信管理中心发送调取请求;
接收所述通信管理中心返回的线程ID与指针标识的映射关系;
根据所述映射关系确定所述调用指令中包括的线程ID对应的接收指针。
如图4所示,本发明实施例提供一种线程间通信的设备,包括确定模块400和处理模块401:
确定模块400:用于在接收到第二线程的调用指令后确定所述第二线程的接收指针;
处理模块401:用于通过所述接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上。
可选的,所述处理模块402具体用于:
根据所述调用指令中的接收指针信息确定所述第二线程的接收指针;或,
根据线程ID与指针标识的映射关系,确定所述调用指令中的线程ID对应的接收指针;或,
将所述调用指令中的线程ID发送给通信管理中心,并接收所述通信管理中心返回的所述线程ID对应的接收指针。
可选的,所述处理模块402具体用于:
向通信管理中心发送调取请求;
接收所述通信管理中心返回的线程ID与指针标识的映射关系;
根据所述映射关系确定所述调用指令中包括的线程ID对应的接收指针。
如图5所示,本发明实施例提供一种线程间通信的设备,该设备包括:至少一个处理单元500以及至少一个存储单元501,其中,所述存储单元501存储有程序代码,当所述程序代码被所述处理单元500执行时,使得所述处理单元500执行下列过程:
向第一线程发送调用指令,以使所述第一线程通过所述第二线程的接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上;
在接收到其他线程的调用指令后,从对应的存储位置上获取所述第一线程的数据并进行处理。
可选的,所述处理单元500具体用于:
向所述第一线程发送包括接收指针信息的调用指令;或,
向所述第一线程发送包括所述第二线程的线程ID的调用指令,以使所述第一线程根据线程ID与指针标识的映射关系确定线程ID对应的接收指针,或将所述调用指令中的线程ID发送给通信管理中心并接收所述通信管理中心返回的所述线程ID对应的接收指针。
可选的,所述处理单元500还用于:
将所述第二线程的线程ID与所述第二线程的接收指针的映射关系存储到通信管理中心。
如图6所示,本发明实施例提供一种线程间通信的设备,包括确定模块600和处理模块601:
发送模块600:用于向第一线程发送调用指令,以使所述第一线程通过所述第二线程的接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上;
处理模块601:用于在接收到其他线程的调用指令后,从对应的存储位置上获取所述第一线程的数据并进行处理。
可选的,所述处理模块601具体用于:
向所述第一线程发送包括接收指针信息的调用指令;或,
向所述第一线程发送包括所述第二线程的线程ID的调用指令,以使所述第一线程根据线程ID与指针标识的映射关系确定线程ID对应的接收指针,或将所述调用指令中的线程ID发送给通信管理中心并接收所述通信管理中心返回的所述线程ID对应的接收指针。
可选的,所述处理模块601还用于:
将所述第二线程的线程ID与所述第二线程的接收指针的映射关系存储到通信管理中心。
需要说明的是,如果所述第一线程与所述第二线程在同一个设备中,则所述图3的处理单元与所述图5的处理单元可以在同一个处理器中,所述图3的存储单元与所述图5的存储单元也可以是在同一个存储器中。
本发明实施例还提供一种计算机可读非易失性存储介质,包括程序代码,当所述程序代码在计算设备上运行时,所述程序代码用于使所述计算设备执行上述本发明实施例线程间通信的方法的步骤。
基于同一发明构思,本发明实施例中还提供了一种线程间通信的方法,由于该方法对应的设备是本发明实施例线程间通信的设备,并且该方法解决问题的原理与该设备相似,因此该方法的实施可以参见系统的实施,重复之处不再赘述。
如图7所示,本发明实施例提供的一种线程间通信的方法,具体包括以下步骤:
步骤700、第一线程在接收到第二线程的调用指令后确定所述第二线程的接收指针;
步骤701、所述第一线程通过所述接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上。
可选的,所述第一线程在接收到第二线程的调用指令后确定所述第二线程的接收指针,包括:
所述第一线程根据所述调用指令中的接收指针信息确定所述第二线程的接收指针;或,
所述第一线程根据线程ID与指针标识的映射关系,确定所述调用指令中的线程ID对应的接收指针;或,
所述第一线程将所述调用指令中的线程ID发送给通信管理中心,并接收所述通信管理中心返回的所述线程ID对应的接收指针。
可选的,所述第一线程根据线程ID与指针标识的映射关系,确定所述调用指令中的线程ID对应的接收指针,包括:
所述第一线程向通信管理中心发送调取请求;
所述第一线程接收所述通信管理中心返回的线程ID与指针标识的映射关系;
所述第一线程根据所述映射关系确定所述调用指令中包括的线程ID对应的接收指针。
基于同一发明构思,本发明实施例中还提供了一种线程间通信的方法,由于该方法对应的设备是本发明实施例线程间通信的设备,并且该方法解决问题的原理与该设备相似,因此该方法的实施可以参见系统的实施,重复之处不再赘述。
如图8所示,本发明实施例还提供一种线程间通信的方法,该方法包括:
步骤800、第二线程向第一线程发送调用指令,以使所述第一线程通过所述第二线程的接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上;
步骤801、所述第二线程在接收到其他线程的调用指令后,从对应的存储位置上获取所述第一线程的数据并进行处理。
可选的,所述第二线程向第一线程发送调用指令,包括:
所述第二线程向所述第一线程发送包括接收指针信息的调用指令;或,
所述第二线程向所述第一线程发送包括所述第二线程的线程ID的调用指令,以使所述第一线程根据线程ID与指针标识的映射关系确定线程ID对应的接收指针,或将所述调用指令中的线程ID发送给通信管理中心并接收所述通信管理中心返回的所述线程ID对应的接收指针。
可选的,所述方法还包括:
所述第二线程将所述第二线程的线程ID与所述第二线程的接收指针的映射关系存储到通信管理中心。
以上参照示出根据本申请实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。
相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种线程间通信的方法,其特征在于,该方法包括:
第一线程在接收到第二线程的调用指令后确定所述第二线程的接收指针;
所述第一线程通过所述接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上。
2.如权利要求1所述的方法,其特征在于,所述第一线程在接收到第二线程的调用指令后确定所述第二线程的接收指针,包括:
所述第一线程根据所述调用指令中的接收指针信息确定所述第二线程的接收指针;或
所述第一线程根据线程ID与指针标识的映射关系,确定所述调用指令中的线程ID对应的接收指针;或
所述第一线程将所述调用指令中的线程ID发送给通信管理中心,并接收所述通信管理中心返回的所述线程ID对应的接收指针。
3.如权利要求2所述的方法,其特征在于,所述第一线程根据线程ID与指针标识的映射关系,确定所述调用指令中的线程ID对应的接收指针,包括:
所述第一线程向通信管理中心发送调取请求;
所述第一线程接收所述通信管理中心返回的线程ID与指针标识的映射关系;
所述第一线程根据所述映射关系确定所述调用指令中包括的线程ID对应的接收指针。
4.一种线程间通信的方法,其特征在于,该方法包括:
第二线程向第一线程发送调用指令,以使所述第一线程通过所述第二线程的接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上;
所述第二线程在接收到其他线程的调用指令后,从对应的存储位置上获取所述第一线程的数据并进行处理。
5.如权利要求4所述的方法,其特征在于,所述第二线程向第一线程发送调用指令,包括:
所述第二线程向所述第一线程发送包括接收指针信息的调用指令;或
所述第二线程向所述第一线程发送包括所述第二线程的线程ID的调用指令,以使所述第一线程根据线程ID与指针标识的映射关系确定线程ID对应的接收指针,或将所述调用指令中的线程ID发送给通信管理中心并接收所述通信管理中心返回的所述线程ID对应的接收指针。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
所述第二线程将所述第二线程的线程ID与所述第二线程的接收指针的映射关系存储到通信管理中心。
7.一种线程间通信的设备,其特征在于,该设备包括:至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行下列过程:
在接收到第二线程的调用指令后确定所述第二线程的接收指针;
通过所述接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上。
8.如权利要求7所述的设备,其特征在于,所述处理单元具体用于:
根据所述调用指令中的接收指针信息确定所述第二线程的接收指针;或
根据线程ID与指针标识的映射关系,确定所述调用指令中的线程ID对应的接收指针;或
将所述调用指令中的线程ID发送给通信管理中心,并接收所述通信管理中心返回的所述线程ID对应的接收指针。
9.一种线程间通信的设备,其特征在于,该设备包括:至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行下列过程:
向第一线程发送调用指令,以使所述第一线程通过所述第二线程的接收指针对应的接收函数将所述第一线程的数据缓存到所述第二线程对应的存储位置上;
在接收到其他线程的调用指令后,从对应的存储位置上获取所述第一线程的数据并进行处理。
10.如权利要求9所述的设备,其特征在于,所述处理单元具体用于:
向所述第一线程发送包括接收指针信息的调用指令;或
向所述第一线程发送包括所述第二线程的线程ID的调用指令,以使所述第一线程根据线程ID与指针标识的映射关系确定线程ID对应的接收指针,或将所述调用指令中的线程ID发送给通信管理中心并接收所述通信管理中心返回的所述线程ID对应的接收指针。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910082083.6A CN109918209B (zh) | 2019-01-28 | 2019-01-28 | 一种线程间通信的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910082083.6A CN109918209B (zh) | 2019-01-28 | 2019-01-28 | 一种线程间通信的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109918209A true CN109918209A (zh) | 2019-06-21 |
CN109918209B CN109918209B (zh) | 2021-02-02 |
Family
ID=66961029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910082083.6A Active CN109918209B (zh) | 2019-01-28 | 2019-01-28 | 一种线程间通信的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109918209B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788888A (zh) * | 2010-02-09 | 2010-07-28 | 中兴通讯股份有限公司 | 一种实现目标端驱动的方法及该目标端驱动 |
CN101982955A (zh) * | 2010-11-19 | 2011-03-02 | 深圳华大基因科技有限公司 | 高性能文件传输系统及方法 |
CN102331923A (zh) * | 2011-10-13 | 2012-01-25 | 西安电子科技大学 | 一种基于多核多线程处理器的功能宏流水线实现方法 |
CN102567111A (zh) * | 2011-12-23 | 2012-07-11 | 深圳市融创天下科技股份有限公司 | 一种异步过程调用的方法、系统和终端设备 |
CN104080016A (zh) * | 2014-06-25 | 2014-10-01 | 北京奇虎科技有限公司 | 一种浏览器中进行音视频信息显示的方法和装置 |
CN104601523A (zh) * | 2013-10-31 | 2015-05-06 | 腾讯科技(深圳)有限公司 | 一种传输数据的方法及装置 |
US9141310B1 (en) * | 2012-06-27 | 2015-09-22 | Google Inc. | Methods and apparatuses for shared state information among concurrently running processes or threads |
CN105516086A (zh) * | 2015-11-25 | 2016-04-20 | 广州华多网络科技有限公司 | 业务处理方法及装置 |
CN106371900A (zh) * | 2015-07-23 | 2017-02-01 | 腾讯科技(深圳)有限公司 | 一种实现异步调用的数据处理方法及装置 |
CN108717380A (zh) * | 2018-05-15 | 2018-10-30 | 西安万像电子科技有限公司 | 消息处理方法和装置 |
-
2019
- 2019-01-28 CN CN201910082083.6A patent/CN109918209B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788888A (zh) * | 2010-02-09 | 2010-07-28 | 中兴通讯股份有限公司 | 一种实现目标端驱动的方法及该目标端驱动 |
CN101982955A (zh) * | 2010-11-19 | 2011-03-02 | 深圳华大基因科技有限公司 | 高性能文件传输系统及方法 |
CN102331923A (zh) * | 2011-10-13 | 2012-01-25 | 西安电子科技大学 | 一种基于多核多线程处理器的功能宏流水线实现方法 |
CN102567111A (zh) * | 2011-12-23 | 2012-07-11 | 深圳市融创天下科技股份有限公司 | 一种异步过程调用的方法、系统和终端设备 |
CN102567111B (zh) * | 2011-12-23 | 2017-10-27 | 融创天下(上海)科技发展有限公司 | 一种异步过程调用的方法、系统和终端设备 |
US9141310B1 (en) * | 2012-06-27 | 2015-09-22 | Google Inc. | Methods and apparatuses for shared state information among concurrently running processes or threads |
CN104601523A (zh) * | 2013-10-31 | 2015-05-06 | 腾讯科技(深圳)有限公司 | 一种传输数据的方法及装置 |
CN104080016A (zh) * | 2014-06-25 | 2014-10-01 | 北京奇虎科技有限公司 | 一种浏览器中进行音视频信息显示的方法和装置 |
CN106371900A (zh) * | 2015-07-23 | 2017-02-01 | 腾讯科技(深圳)有限公司 | 一种实现异步调用的数据处理方法及装置 |
CN105516086A (zh) * | 2015-11-25 | 2016-04-20 | 广州华多网络科技有限公司 | 业务处理方法及装置 |
CN108717380A (zh) * | 2018-05-15 | 2018-10-30 | 西安万像电子科技有限公司 | 消息处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
陈艳 等: "基于WinPcap的海量数据接收与保存", 《软件导刊》 * |
Also Published As
Publication number | Publication date |
---|---|
CN109918209B (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4016399A1 (en) | Method for distributed training model, relevant apparatus, and computer program product | |
CN110049113A (zh) | 业务消息处理方法及装置 | |
EP4187882B1 (en) | Data transmission method and apparatus, device, storage medium, and computer program product | |
CN110247942A (zh) | 一种数据发送方法、装置和可读介质 | |
CN109475002A (zh) | 一种下行数据传输的缓存方法、终端及基站 | |
CN108011871A (zh) | 一种远程协助处理方法及设备 | |
CN107403112A (zh) | 数据校验方法及其设备 | |
CN115914164A (zh) | 一种隧道连接方法、装置、电子设备和存储介质 | |
CN109697034A (zh) | 一种数据写入方法、装置、电子设备及存储介质 | |
CN109918209A (zh) | 一种线程间通信的方法和设备 | |
CN110557341A (zh) | 数据限流的方法和装置 | |
CN109672931A (zh) | 用于处理视频帧的方法和装置 | |
CN110245027A (zh) | 一种进程间通信的方法和设备 | |
CN115134352A (zh) | 一种埋点数据上传方法、装置、设备及介质 | |
CN108833477A (zh) | 基于共享内存的消息传输方法、系统和装置 | |
CN107707383B (zh) | 放通处理方法、装置、第一网元及第二网元 | |
TW201806369A (zh) | 傳輸資源的指示方法、裝置及存儲媒介 | |
CN112543228A (zh) | 数据传输方法、装置、电子设备和计算机可读介质 | |
CN113778850A (zh) | 数据处理方法、装置、电子设备和计算机可读介质 | |
CN108092858B (zh) | 用于切换代理节点的方法及装置 | |
CN109407995A (zh) | 冷热数据管理方法、装置、电子设备及计算机可读介质 | |
CN113590168B (zh) | 嵌入式设备升级方法、装置、设备、介质及程序产品 | |
CN109558375A (zh) | 一种优化的文件存储方法、存储介质、设备及系统 | |
CN110008051A (zh) | 一种多节点存储系统的节点重启方法、装置及设备 | |
CN115118727B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240510 Address after: Room 6227, No. 999, Changning District, Shanghai 200050 Patentee after: Shenlan robot (Shanghai) Co.,Ltd. Country or region after: China Address before: Unit 1001, 369 Weining Road, Changning District, Shanghai, 200336 (9th floor of actual floor) Patentee before: DEEPBLUE TECHNOLOGY (SHANGHAI) Co.,Ltd. Country or region before: China |