本技术实施例涉及数据处理,更具体地涉及一种消息同步方法、系统以及相关装置。
背景技术:
1、目前,多线程处理作为一种可以充分利用计算机资源,使计算任务并行化,提升系统性能的技术,已在计算机,大数据,分布式系统等领域得到了广泛的使用。
2、在多线程处理过程中,各线程之间往往需要同步的操作以适当等待其他线程,从而保证操作和数据的正确性。
3、传统的同步技术为一种基于锁的方法,各线程或组件的协作媒介为共享内存,需要同步的线程之间往往要等待各线程的所有任务处理完毕后才可完成同步工作。但当线程数量较多时,如分布式系统,对共享内存的速度与容量也会有更高的要求,但单块共享内存的容量无法无限增大,过大的内存也会减慢内存的读写速度,因此该方法难以进行大规模的扩展,不利于分布式系统的开发。
4、因此,亟需设计一种全新的解决方案,用于克服多线程处理过程中各线程之间消息同步带来的技术问题,减轻多线程处理过程中对共享内存的依赖。
技术实现思路
1、本技术实施例提供了一种改进的消息同步方法、系统以及相关装置,用以实现多线程处理过程中dma引擎与各线程cpu之间的消息同步,减轻多线程处理过程中对共享内存的依赖,降低了扩展系统的成本与难度。
2、本技术的实施例期望提供一种消息同步方法、系统以及相关装置。
3、在本技术的第一方面中,提供了一种消息同步方法,应用于消息同步系统的dma引擎,所述消息同步系统还包括多个线程单元,每个线程单元包括中央处理器cpu;所述方法包括:
4、接收来自任一所述线程单元的cpu的消息同步请求;其中,所述消息同步请求包括源消息信息、源消息信息对应的源线程信息和目标线程信息;
5、根据所述源线程信息在多个所述线程单元中确定源线程单元,并根据所述目标线程信息在多个所述线程单元中确定目标线程单元;
6、根据所述源消息信息生成消息获取请求,向所述源线程单元的cpu发送所述消息获取请求,以获取所述源线程单元的cpu响应所述消息获取请求发送的源消息;
7、发送所述源消息至所述目标线程单元的cpu,并生成第一消息同步标志发送至所述源线程单元的cpu;所述第一消息同步标志用于确认所述源线程单元存储的所述源消息已同步在所述目标线程单元中;
8、在接收到所述目标线程单元的cpu发送的写入完成信息后,生成第二消息同步标志发送至所述目标线程单元的cpu;所述第二消息同步标志用于确认所述目标线程单元存储的所述源消息已同步在所述源线程单元中。
9、在本技术的第二方面中,提供了一种dma引擎,所述dma引擎应用于实现如第一方面中任一所述的消息同步方法;所述dma引擎包括:
10、收发模块,被配置为接收来自消息同步系统的任一线程单元的cpu的消息同步请求;所述消息同步请求包括源消息信息、源消息信息对应的源线程信息和目标线程信息;
11、确认模块,被配置为根据所述源线程信息在多个所述线程单元中确定源线程单元,并根据所述目标线程信息在多个所述线程单元中确定目标线程单元;
12、生成模块,被配置为根据所述源消息信息生成消息获取请求,向所述源线程单元的cpu发送所述消息获取请求,以获取所述源线程单元的cpu响应所述消息获取请求发送的源消息;
13、发送模块,被配置为发送所述源消息至所述目标线程单元的cpu,并生成第一消息同步标志发送至所述源线程单元的cpu;所述第一消息同步标志用于确认所述源线程单元存储的所述源消息已同步在所述目标线程单元中;
14、完成模块,被配置为在接收到所述目标线程单元的cpu发送的写入完成信息后,生成第二消息同步标志发送至所述目标线程单元的cpu;所述第二消息同步标志用于确认所述目标线程单元存储的所述源消息已同步在所述源线程单元中。
15、在本技术的第三方面中,提供了一种消息同步系统,所述系统包括多个线程单元和应用于如权利要求1至11任一消息同步方法所述的dma引擎,每个线程单元包括中央处理器cpu;其中,
16、所述cpu,被配置为向所述dma引擎发送消息同步请求;其中,所述消息同步请求包括源消息信息、源消息信息对应的源线程信息和目标线程信息;
17、所述dma引擎,被配置为根据所述源线程信息在多个所述线程单元中确定源线程单元,并根据所述目标线程信息在多个所述线程单元中确定目标线程单元;根据所述源消息信息生成消息获取请求,向所述源线程单元的cpu发送所述消息获取请求;
18、所述cpu,还被配置为响应所述消息获取请求发送源消息至所述dma引擎;
19、所述dma引擎,还被配置为发送所述源消息至所述目标线程单元的cpu,并生成第一消息同步标志发送至所述源线程单元的cpu;所述第一消息同步标志用于确认所述源线程单元存储的所述源消息已同步在所述目标线程单元中;
20、所述cpu,还被配置为在接收到所述源消息时,在所述源消息写入完成之后发送写入完成信息至所述dma引擎;或,在接收到所述第一消息同步标志时,将所述第一消息同步标志添加至所述源消息对应的内存区域;
21、所述dma引擎,还被配置为生成第二消息同步标志发送至所述目标线程单元的cpu;所述第二消息同步标志用于确认所述目标线程单元存储的所述源消息已同步在所述源线程单元中;
22、所述cpu,还被配置为在接收到所述第二消息同步标志后添加至所述源消息对应的内存区域。
23、在本技术的第四方面中,提供了一种计算机可读存储介质,其包括指令,当其在计算机上运行时,使得计算机执行第一方面中所述的消息同步方法。
24、在本技术的第五方面中,提供了一种计算设备,被配置为:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现第一方面中所述的消息同步方法。
25、本技术实施例提供的技术方案中,提供了一种消息同步方法,应用于消息同步系统的dma引擎,消息同步系统还包括多个线程单元,每个线程单元包括中央处理器cpu;首先,dma引擎接收来自任一线程单元的cpu的消息同步请求;其中,消息同步请求包括源消息信息、源消息信息对应的源线程信息和目标线程信息。其次,dma引擎根据源线程信息在多个线程单元中确定源线程单元,并根据目标线程信息在多个线程单元中确定目标线程单元。然后,dma引擎根据源消息信息生成消息获取请求,向源线程单元的cpu发送消息获取请求,以获取源线程单元的cpu响应消息获取请求发送的源消息。再然后,dma引擎发送源消息至目标线程单元的cpu,并生成第一消息同步标志发送至源线程单元的cpu;第一消息同步标志用于确认源线程单元存储的源消息已同步在目标线程单元中。最终,dma引擎在接收到目标线程单元的cpu发送的写入完成信息后,生成第二消息同步标志发送至目标线程单元的cpu;第二消息同步标志用于确认目标线程单元存储的源消息已同步在源线程单元中。
26、相对于现有多线程处理过程中要等待各线程的所有任务处理完毕后才可完成同步工作的方式,本技术实施例中通过dma引擎根据源线程信息在多个线程单元中确定源线程单元,并根据目标线程信息在多个线程单元中确定目标线程单元,再从源线程单元中获取源消息同步至目标线程单元中,多个线程单元之间通过消息传达各自内存中的数据情况,从而达到通信与协作的目的,减轻了对共享内存的依赖,降低了扩展系统的成本与难度,有效提升系统同步的效率。