System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种应用于PLC与装置的多线程数据同步方法及系统制造方法及图纸_技高网

一种应用于PLC与装置的多线程数据同步方法及系统制造方法及图纸

技术编号:40627632 阅读:14 留言:0更新日期:2024-03-13 21:14
本发明专利技术公开了一种应用于PLC与装置的多线程数据同步方法及系统,包括:将多线程所有用到的数据分为一写多用、多写多用、公用三种类型;根据线程与内存的关系分配独立的内存区;对各独立的内存区加锁;定时同步各独立内存区的数据;各线程依据自己对应的独立内存区进行运行,并把程序运行的结果放入各自独立的内存区;定时更新实际内存的数据;重复定时同步各独立内存区的数据至定时更新实际内存的数据的过程,实现整个程序的运行以及数据的更新。本发明专利技术对于拥有较多线程需要数据同步的复杂系统,在大幅降低各种锁的系统调用开销的同时仍能充分利用处理器的多核资源实现多线程的并行同步运行,从而达到提高程序运行的效率和系统的实时性的目的。

【技术实现步骤摘要】

本专利技术涉及一种数据同步方法及系统,尤其涉及一种应用于plc与装置的多线程数据同步方法及系统。


技术介绍

1、在plc与装置中有大量的线程运行,他们各自独立对公用的数据进行访问,为保证数据的一致性,所使用的方法是各种同步锁,如信号量、互斥量、文件锁等。

2、当其中某个线程需要访问数据时,先通过锁获取并锁定资源的使用权,待到使用完成后再释放锁,供其他线程使用。如果一个线程尝试获取资源时,其他线程已锁定资源,则该线程要等到其他线程释放资源后才能使用。如图1,线程1在t1时刻获取资源继续运行,线程2在t2时刻获取资源失败,等到线程1在t3时刻释放资源时线程2才能继续执行。

3、锁机制很好的解决了多线程资源竞争问题,但在plc这种线程多,竞争多,实时性要求又高的装置,锁机制又带来了效率问题。

4、常用的做法一是对所有的资源使用一把大锁,当一个线程需要某一部分资源的时候,使用锁锁定所有资源的使用权,等到控制完成后,再释放资源供其他线程使用。这种方法虽简单,不容易出错,但最终运行效果相当于单线程运行或单核运行,不能发挥cpu多核的运算能力。另一种做法是将资源分门别类,分成若干小块,对每一小块使用锁,线程只需要锁定自己需要的一部分资源即可。这种方法看似合理,但实际上由于资源切小后,众多线程有大量的锁的请求与释放工作,而锁的操作是系统级调用,意味着程序执行过程中会从用户态切换到系统态再切换回用户态,相对普通程序执行来说,这个开销是巨大的,结果这种方式造成线程执行时间大幅增加,如图2。


技术实现思路

1、专利技术目的:本专利技术目的是提供一种应用于plc与装置的多线程数据同步方法及系统,以大幅降低数据同步的系统开销,从而提高整个设备的实时性。

2、技术方案:本专利技术包括:将多线程所有用到的数据分为一写多用、多写多用、公用三种类型;根据线程与内存的关系分配独立的内存区;对各独立的内存区加锁;定时同步各独立内存区的数据;各线程依据自己对应的独立内存区进行运行,并把程序运行的结果放入各自独立的内存区;定时更新实际内存的数据;重复定时同步各独立内存区的数据至定时更新实际内存的数据的过程,实现整个程序的运行以及数据的更新。

3、所述数据分类的依据为该数据被多少线程来写:数据仅被一个线程写则为一写多用类,数据被几个线程写则为多写多用类、剩下数据为公用类。

4、所述根据线程与内存的关系分配独立的内存区,具体分配方法为:对于一写多用的内存对应的线程建立独立内存区;对于多写多用的内存对应的多个线程建立一个独立内存区;对剩下的线程建立一个独立内存区。

5、所述对各独立的内存区加锁,具体为:对于单线程独立使用的内存不加锁;对于多线程共享的独立内存区加局部锁;对于公用数据加全局锁。

6、所述定时同步各独立内存区的数据时,将一写多用与多写多用的数据同步至各独立内存区,不同步公用数据。

7、所述定时同步各独立内存区的数据时,按照读数据箭头的方向将实际内存中的数据重复写入独立内存中。

8、所述定时更新实际内存的数据时,依次将分配的各独立内存中的数据写入实际内存中,写入时仅写入各线程或者多个线程负责写入的部分。

9、所述定时更新实际内存的数据时,按照写数据箭头方向将独立内存的数据分别写入对应的实际内存区。

10、一种应用于plc与装置的多线程数据同步系统,用于实现一种应用于plc与装置的多线程数据同步方法。

11、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述一种应用于plc与装置的多线程数据同步方法。

12、有益效果:本专利技术对于拥有较多线程需要数据同步的复杂系统,在大幅降低传统同步方式中各种锁的系统调用开销的同时仍能充分利用处理器的多核资源实现多线程的并行同步运行,从而达到提高程序运行的效率和系统的实时性的目的。

本文档来自技高网...

【技术保护点】

1.一种应用于PLC与装置的多线程数据同步方法,其特征在于,包括:将多线程所有用到的数据分为一写多用、多写多用、公用三种类型;根据线程与内存的关系分配独立的内存区;对各独立的内存区加锁;定时同步各独立内存区的数据;各线程依据自己对应的独立内存区进行运行,并把程序运行的结果放入各自独立的内存区;定时更新实际内存的数据;重复定时同步各独立内存区的数据至定时更新实际内存的数据的过程,实现整个程序的运行以及数据的更新。

2.根据权利要求1所述的一种应用于PLC与装置的多线程数据同步方法,其特征在于,所述数据分类的依据为该数据被多少线程来写:数据仅被一个线程写则为一写多用类,数据被几个线程写则为多写多用类、剩下数据为公用类。

3.根据权利要求2所述的一种应用于PLC与装置的多线程数据同步方法,其特征在于,所述根据线程与内存的关系分配独立的内存区,具体分配方法为:对于一写多用的内存对应的线程建立独立内存区;对于多写多用的内存对应的多个线程建立一个独立内存区;对剩下的线程建立一个独立内存区。

4.根据权利要求3所述的一种应用于PLC与装置的多线程数据同步方法,其特征在于,所述对各独立的内存区加锁,具体为:对于单线程独立使用的内存不加锁;对于多线程共享的独立内存区加局部锁;对于公用数据加全局锁。

5.根据权利要求3所述的一种应用于PLC与装置的多线程数据同步方法,其特征在于,所述定时同步各独立内存区的数据时,将一写多用与多写多用的数据同步至各独立内存区,不同步公用数据。

6.根据权利要求5所述的一种应用于PLC与装置的多线程数据同步方法,其特征在于,所述定时同步各独立内存区的数据时,按照读数据箭头的方向将实际内存中的数据重复写入独立内存中。

7.根据权利要求5所述的一种应用于PLC与装置的多线程数据同步方法,其特征在于,所述定时更新实际内存的数据时,依次将分配的各独立内存中的数据写入实际内存中,写入时仅写入各线程或者多个线程负责写入的部分。

8.根据权利要求7所述的一种应用于PLC与装置的多线程数据同步方法,其特征在于,所述定时更新实际内存的数据时,按照写数据箭头方向将独立内存的数据分别写入对应的实际内存区。

9.一种应用于PLC与装置的多线程数据同步系统,其特征在于,该系统用于实现权利要求1~8任一项所述的一种应用于PLC与装置的多线程数据同步方法。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行以实现权利要求1~8中任一项所述的一种应用于PLC与装置的多线程数据同步方法。

...

【技术特征摘要】

1.一种应用于plc与装置的多线程数据同步方法,其特征在于,包括:将多线程所有用到的数据分为一写多用、多写多用、公用三种类型;根据线程与内存的关系分配独立的内存区;对各独立的内存区加锁;定时同步各独立内存区的数据;各线程依据自己对应的独立内存区进行运行,并把程序运行的结果放入各自独立的内存区;定时更新实际内存的数据;重复定时同步各独立内存区的数据至定时更新实际内存的数据的过程,实现整个程序的运行以及数据的更新。

2.根据权利要求1所述的一种应用于plc与装置的多线程数据同步方法,其特征在于,所述数据分类的依据为该数据被多少线程来写:数据仅被一个线程写则为一写多用类,数据被几个线程写则为多写多用类、剩下数据为公用类。

3.根据权利要求2所述的一种应用于plc与装置的多线程数据同步方法,其特征在于,所述根据线程与内存的关系分配独立的内存区,具体分配方法为:对于一写多用的内存对应的线程建立独立内存区;对于多写多用的内存对应的多个线程建立一个独立内存区;对剩下的线程建立一个独立内存区。

4.根据权利要求3所述的一种应用于plc与装置的多线程数据同步方法,其特征在于,所述对各独立的内存区加锁,具体为:对于单线程独立使用的内存不加锁;对于多线程共享的独立内存区加局部锁;对于公用数据加...

【专利技术属性】
技术研发人员:张伟蔡龙赵涌李建光姜海军何敏王栋刘轲姜晓钟文根徐闱卿
申请(专利权)人:江西洪屏抽水蓄能有限公司
类型:发明
国别省市:

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

1