一种多线程数据架构、多线程消息传递方法及系统技术方案

技术编号:25308187 阅读:23 留言:0更新日期:2020-08-18 22:27
本发明专利技术属于多线程开发技术领域,具体涉及一种多线程数据架构、多线程消息传递方法及系统,架构包括逻辑变量、逻辑节点、节点列表、神经元、神经元中枢和神经元线程;神经元中枢集中存放神经元,载入逻辑节点列表,并根据逻辑节点列表的内容实例化全部的神经元对象,根据逻辑节点列表记录的逻辑关系构建逻辑网;神经元中枢将注册后的神经元线程与对应的神经元对象相关联;神经元对象在感知到输入状态改变后,触发关联的神经元线程对象进行所需运算,进而进行整个逻辑网的多线程运算。本发明专利技术将程序运算内容依其数据流状态变化以及各数据之间的因果推演关系进行线程分解,构建出多线程数据架构和消息传递机制,提高了多线程运算的效率。

【技术实现步骤摘要】
一种多线程数据架构、多线程消息传递方法及系统
本专利技术属于多线程开发
,具体涉及一种多线程数据架构、多线程消息传递方法及系统。
技术介绍
在计算机程序中,多线程程序具有能有效发挥CPU的运算资源的优点,而所有多线程软件都需要共同面对跨线程消息传递的问题。计算机程序在不同线程间进行数据传递时,其最底层都是实用共享内存的方法,也即在内存中开辟一块空间,允许不同线程共同拥有所述空间的访问权。实际代码中,为了减少数据的拷贝量,跨线程发送信息时往往并不是发送完整的数据,而只是发送所述数据所在的内存地址。由于数据量短小,这些信息片段也因而常被成为消息。传递一般被称为跨线程消息传递,被传递的信息泛称为消息。跨线程消息传递会面临到数据同步、资源互锁等问题,对软件而言是一个具有一定风险的操作,开发过程中需要程序员格外小心。同步是指不同线程对同一资源的访问必须在时间上加以区隔,不能一条线程还没操作完,另一条线程就又介入进来,否则就会造成数据错误。为了协调不同线程对同一块资源的访问,许多编程语言都提供了锁的概念。锁是一个标志位,用于标识某块资源是否正在使用中。对于正在使用中的资源,别的线程也想要使用它的话必须要先等待,等到开锁释放所述资源的使用权才可以介入使用。而使用标志锁又可能引发多条线程需要使用的多个资源相互锁住,造成程序卡死。跨线程消息传递具有很大的风险性,一旦把握不好很容易导致程序崩溃。因而对软件开发团队而言,开发多线程程序具有很大不确定性和工程风险。尽管多线程可以更好的发挥CPU计算资源,但开发多线程程序仍然不是当今软件开发界的主流。目前软件开发中对多线程的使用还仅限于那些可将一个大运算任务分解为若干运算过程类似的同质子任务的情况。例如在进行矩阵运算时,通过多线程对矩阵的不同元素同时进行计算,又如渲染图片时通过并行计算同时渲染图片的不同部分等。此类多线程应用,其效力仅能发挥于加速某些特定任务的执行速度,而不能从总体设计层面采用多线程方式的软件架构。目前还没有能够在软件架构层面实施多线程程序的软件设计方法,更缺乏标准化的跨线程数据传递与通讯机制。
技术实现思路
针对现有技术中的缺陷,本专利技术提供了一种多线程数据架构、多线程消息传递方法及系统,以神经元工作模式为仿生学基础,将程序运算内容依其数据流状态变化以及各数据之间的因果推演关系进行线程分解,从而构建出多线程数据架构和消息传递机制,提高了多线程运算的效率。第一方面,本专利技术提供了一种多线程数据架构,包括逻辑变量、逻辑节点、节点列表、神经元、神经元中枢和神经元线程;所述逻辑变量,用于表示业务范围内所涉及的各个逻辑变量,每一个逻辑变量均有对应的变量名;所述逻辑节点,用于表示不同逻辑变量之间的因果关系,每个逻辑节点包含代表节点的逻辑变量,以及对所述逻辑变量的状态产生影响的所有上游逻辑变量;所述节点列表,用于根据逻辑关系记录存储各个实例化的逻辑节点对象;所述神经元,用于表示逻辑节点内各逻辑变量之间的逻辑推理行为,每个神经元包含代表对应节点的逻辑变量,以及所述逻辑变量与上游逻辑变量实现因果关系的逻辑推理算法;所述神经元中枢,用于集中存放神经元,在程序开始运行时,实例化后的神经元中枢载入节点列表,并根据节点列表的内容实例化全部的神经元对象,进而根据节点列表记录的逻辑关系构建逻辑网;所述神经元线程,每个实例化后的神经元线程对象向神经元中枢注册,神经元中枢将注册的神经元线程与对应的神经元对象相关联;神经元对象在感知到输入状态改变后,触发关联的神经元线程对象进行所需运算,进而进行整个逻辑网的多线程运算。优选地,所述神经元线程是Bot类的一个子类,继承Bot类的属性和方法。第二方面,本专利技术提供了一种多线程消息传递方法,基于第一方面所述的一种多线程数据架构,其特征在于,包括以下步骤:一个神经元线程对象的工作线程产生消息时,所述神经元线程对象通过fireup函数将消息数据传递给关联的神经元对象;神经元对象根据消息数据感知到逻辑状态值发生变化时,所述神经元对象调用fire函数将逻辑状态值推送给下游神经元对象;下游神经元对象在感知到输入的逻辑状态值变化时,唤醒关联的下游神经元线程对象的工作线程,下游神经元线程对象利用input函数接收输入的消息数据,并在自身线程内对消息数据进行处理,从而完成一个线程到另一个工作线程的消息传递。优选地,所述的一种多线程消息传递方法,还包括以下步骤:初始化每个神经元线程对象,并将每个神经元线程对象与对应的神经元对象相关联。优选地,所述初始化每个神经元线程对象,并将每个神经元线程对象与对应的神经元对象相关联,具体为:程序启动后实例化神经元中枢和神经元线程对象;神经元中枢载入节点列表,根据节点列表的内容实例化全部的神经元对象,并根据节点列表记录的逻辑关系构建逻辑网;神经元线程对象向神经元中枢发送注册信息,神经元中枢将注册的神经元线程对象和对应的神经元对象相关联。优选地,所述神经元对象调用fire函数将逻辑状态值推送给下游神经元对象,具体为:所述神经元对象查询订阅表,订阅表存储有与所述神经元对象有下游逻辑关系的神经元对象;根据订阅表得到下游神经元对象;所述神经元对象调用fire函数将逻辑状态值推送给下游神经元对象。第三方面,本专利技术提供了一种多线程消息传递系统,基于第一方面所述的一种多线程数据架构,包括消息产生单元、逻辑推送单元和线程跨传单元:消息产生单元,用于当一个神经元线程对象的工作线程产生消息时,所述神经元线程对象通过fireup函数将消息数据传递给关联的神经元对象;逻辑推送单元,用于神经元对象根据消息数据,感知到逻辑状态值发生变化时,所述神经元对象调用fire函数将逻辑状态值推送给下游神经元对象;线程跨传单元,用于下游神经元对象在感知到输入的逻辑状态值变化时,唤醒关联的下游神经元线程对象的工作线程,下游神经元线程对象利用input函数接收输入的消息数据,并在自身线程内对消息数据进行处理,从而完成一个线程到另一个工作线程的消息传递。优选地,所述的一种多线程消息传递方法,还包括初始化单元;所述初始化单元,用于初始化每个神经元线程对象,并将每个神经元线程对象与对应的神经元对象相关联。优选地,所述初始化每个神经元线程对象,并将每个神经元线程对象与对应的神经元对象相关联,具体为:程序启动后实例化神经元中枢和神经元线程对象;神经元中枢载入节点列表,根据节点列表的内容实例化全部的神经元对象,并根据节点列表记录的逻辑关系构建逻辑网;神经元线程对象向神经元中枢发送注册信息,神经元中枢将注册的神经元线程对象和对应的神经元对象相关联。优选地,所述神经元对象调用fire函数将逻辑状态值推送给下游神经元对象,具体为:所述神经元对象查询订阅表,订阅表存储有与所述神经元对象有下游逻辑关系的神经元对象;根据订阅表得到下游神经元对象本文档来自技高网
...

【技术保护点】
1.一种多线程数据架构,其特征在于,包括逻辑变量、逻辑节点、节点列表、神经元、神经元中枢和神经元线程;/n所述逻辑变量,用于表示业务范围内所涉及的各个逻辑变量,每一个逻辑变量均有对应的变量名;/n所述逻辑节点,用于表示不同逻辑变量之间的因果关系,每个逻辑节点包含代表节点的逻辑变量,以及对所述逻辑变量的状态产生影响的所有上游逻辑变量;/n所述节点列表,用于根据逻辑关系记录存储各个实例化的逻辑节点对象;/n所述神经元,用于表示逻辑节点内各逻辑变量之间的逻辑推理行为,每个神经元包含代表对应节点的逻辑变量,以及所述逻辑变量与上游逻辑变量实现因果关系的逻辑推理算法;/n所述神经元中枢,用于集中存放神经元,在程序开始运行时,实例化后的神经元中枢载入节点列表,并根据节点列表的内容实例化全部的神经元对象,进而根据节点列表记录的逻辑关系构建逻辑网;/n所述神经元线程,每个实例化后的神经元线程对象向神经元中枢注册,神经元中枢将注册的神经元线程与对应的神经元对象相关联;神经元对象在感知到输入状态改变后,触发关联的神经元线程对象进行所需运算,进而进行整个逻辑网的多线程运算。/n

【技术特征摘要】
1.一种多线程数据架构,其特征在于,包括逻辑变量、逻辑节点、节点列表、神经元、神经元中枢和神经元线程;
所述逻辑变量,用于表示业务范围内所涉及的各个逻辑变量,每一个逻辑变量均有对应的变量名;
所述逻辑节点,用于表示不同逻辑变量之间的因果关系,每个逻辑节点包含代表节点的逻辑变量,以及对所述逻辑变量的状态产生影响的所有上游逻辑变量;
所述节点列表,用于根据逻辑关系记录存储各个实例化的逻辑节点对象;
所述神经元,用于表示逻辑节点内各逻辑变量之间的逻辑推理行为,每个神经元包含代表对应节点的逻辑变量,以及所述逻辑变量与上游逻辑变量实现因果关系的逻辑推理算法;
所述神经元中枢,用于集中存放神经元,在程序开始运行时,实例化后的神经元中枢载入节点列表,并根据节点列表的内容实例化全部的神经元对象,进而根据节点列表记录的逻辑关系构建逻辑网;
所述神经元线程,每个实例化后的神经元线程对象向神经元中枢注册,神经元中枢将注册的神经元线程与对应的神经元对象相关联;神经元对象在感知到输入状态改变后,触发关联的神经元线程对象进行所需运算,进而进行整个逻辑网的多线程运算。


2.根据权利要求1所述的多线程数据架构,其特征在于,所述神经元线程是Bot类的一个子类,继承Bot类的属性和方法。


3.一种多线程消息传递方法,基于权利要求1或2所述的一种多线程数据架构,其特征在于,包括以下步骤:
一个神经元线程对象的工作线程产生消息时,所述神经元线程对象通过fireup函数将消息数据传递给关联的神经元对象;
神经元对象根据消息数据感知到逻辑状态值发生变化时,所述神经元对象调用fire函数将逻辑状态值推送给下游神经元对象;
下游神经元对象在感知到输入的逻辑状态值变化时,唤醒关联的下游神经元线程对象的工作线程,下游神经元线程对象利用input函数接收输入的消息数据,并在自身线程内对消息数据进行处理,从而完成一个线程到另一个工作线程的消息传递。


4.根据权利要求3所述的一种多线程消息传递方法,其特征在于,还包括以下步骤:
初始化每个神经元线程对象,并将每个神经元线程对象与对应的神经元对象相关联。


5.根据权利要求3所述的一种多线程消息传递方法,其特征在于,所述初始化每个神经元线程对象,并将每个神经元线程对象与对应的神经元对象相关联,具体为:
程序启动后实例化神经元中枢和神经元线程对象;
神经元中枢载入节点列表,根据节点列表的内容实例化全部的神经元对...

【专利技术属性】
技术研发人员:林嘉
申请(专利权)人:南昌嘉研科技有限公司
类型:发明
国别省市:江西;36

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1