[发明专利]一种线程间通信方法及相关装置有效
| 申请号: | 201910356949.8 | 申请日: | 2019-04-29 |
| 公开(公告)号: | CN110096378B | 公开(公告)日: | 2021-01-08 |
| 发明(设计)人: | 何保良 | 申请(专利权)人: | 杭州涂鸦信息技术有限公司 |
| 主分类号: | G06F9/54 | 分类号: | G06F9/54 |
| 代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
| 地址: | 310012 浙江省杭*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 线程 通信 方法 相关 装置 | ||
本发明公开了一种线程间通信方法,确定待返回信息包括的子信息、子信息所属线程以及所属线程之间的依赖关系,按照该依赖关系依次从首线程、中间线程、尾线程获取相应的子信息,在线程间传递子信息的过程中传递用于返回待返回信息的目标线程的通信信息,并在当前线程不是目标线程且完成子信息与通信信息的传递时就释放当前线程,当尾线程获取到最终的待返回信息时,即可直接利用通信信息与目标线程建立连接,直接传输待返回信息至目标线程,而其他线程无需等待,在完成子信息与通信信息的传递时就被释放,可以避免大量线程的阻塞,减少线程资源的浪费。本申请还提供了一种线程间通信系统、装置及计算机可读存储介质,同样可以实现上述技术效果。
技术领域
本发明涉及计算机技术领域,更具体地说,涉及一种线程间通信方法、系统、装置及计算机可读存储介质。
背景技术
在计算机技术中,为了更加有效的利用CPU资源,通常会将不同的业务放置在不同的线程上运行,业务也就是线程之间通过信号进行通信,这就是所谓的面向并发编程。
但是线程之间信息交换量过多,线程内部信息会有相互依赖关系,如图1所示,线程1中可以获取到数据A,线程2中可以获取到数据B,线程3中可以获取到数据C,当需要获取到数据((AB)C)时,就会有这样的依赖关系,即先要到线程1获取数据A,再用数据A到线程2获取到数据(AB),然后再到线程3中获取到数据((AB)C),然后再反方向将数据((AB)C)经过线程2返回给线程1,使线程1将数据((AB)C)返回。
由于数据的传递只能在相邻的线程间进行,线程1、线程2、线程3之间就会依赖关系,当有依赖关系时,所有涉及到的线程都需要等待最终数据((AB)C)获取到,并经由自己转发后才能被释放,在等待期间线程就会处于阻塞状态存在一定的资源浪费。
当一个数据所涉及的相互依赖的线程过多时,处于阻塞状态的线程也会更多,而且每个线程阻塞的时间也会更长,因此会带来较大的资源浪费。
因此,如何避免线程并发过程中的资源浪费,是本领域技术人员需要解决的问题。
发明内容
本发明的目的在于提供一种线程间通信方法、系统、装置及计算机可读存储介质,以解决现有技术中线程并发过程中的资源浪费问题。
为实现上述目的,本发明实施例提供了如下技术方案:
一种线程间通信方法,包括:
确定待返回信息包括的子信息、所述子信息所属线程与所述待返回信息对应的所述所属线程之间的依赖关系;
按照所述依赖关系在首线程获取第一子信息,将第一子信息与目标线程的通信信息传入中间线程;其中,所述目标线程为用于返回所述待返回信息的线程;
在所述中间线程获取第二子信息,将所述第一子信息、所述第二子信息与所述目标线程的通信信息传入尾线程,释放所述中间线程中的非目标线程;
在所述尾线程中获取第三子信息,并利用所述目标线程的通信信息建立所述尾线程与所述目标线程的通信连接,以使所述尾线程将包括所述第一子信息、所述第二子信息与所述第三子信息的待返回信息发送至所述目标线程。
其中,所述通信信息包括线程ID。
其中,当所述目标线程为所述中间线程时,所述按照所述依赖关系在首线程获取第一子信息,将第一子信息与目标线程的通信信息传入中间线程之后,还包括:
释放所述首线程。
其中,所述目标线程为所述首线程。
为实现上述目的,本申请还提供了一种线程间通信系统,包括:
确定模块,用于确定待返回信息包括的子信息、所述子信息所属线程与所述待返回信息对应的所述所属线程之间的依赖关系;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州涂鸦信息技术有限公司,未经杭州涂鸦信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910356949.8/2.html,转载请声明来源钻瓜专利网。





