System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及进程同步处理,尤其涉及一种多进程同步系统及其相关设备。
技术介绍
1、在实际应用过程中,手机、智能手表、手环等生产测试自动化测试领域,经常涉及到同一个自动化测试程序同一台电脑上同时启动多个界面,通过对每个启动实例配置不同的参数实现多个被测件并行测试,达到提升测试效率的目的。如:手机的发射机与接收机测试,其一般性的执行流程为循环执行各个频段的发射与接收测试,在此过程需要使用综测仪测量上行信号与下行信号的发射情况。测试发射机时同一时间仅能测试一台待测件。而对于接收测试,仪表只要发射下行信号,多个待测件可以同时接收该信号,实现测试并行。在多轮发射机、接收机测试连续执行的流程中,简单的可以通过互斥分时测试多个手机。对于接收机测试可以在多个测试进程全部并行运行到综测仪发射信号后,再并发执行被测件接收测试动作,多个手机共享下行信号,并行提升测试效率。因此,为了达到接收测试过程中多个被测件并行执行的目的,需要实现所有进程全部执行到仪表发射下行信号后再同时开始并发执行。而实际应用中,可以并行测试的子过程个数是不定的,更加加剧了程序开发的复杂性。
2、为了保证多进程并发执行到指定位置后继续并发执行,现有技术方案一般使用一个进程实现全部流程,将需要并行执行的过程放入不同的线程,等待多个线程执行完成后继续后续过程的执行。但是,并行执行的过程均需要实现多个并行过程线程的创建和执行等待,每增加一个同步点需要重复创建线程,需要全部到达的点位越多,程序越复杂。对于已经开发好的单线程执行流程改造成多进程协同工作,需要同步到达点位较多的多个
技术实现思路
1、本申请旨在至少能解决上述的技术缺陷之一,有鉴于此,本申请提供了一种多进程同步系统及其相关设备,用于解决现有技术中难以高效且简便地实现多个进程并发执行到指定位置后继续并发执行的技术缺陷。
2、一种多进程同步系统,包括:初始化接口、加入同步接口、全部到达同步接口;
3、所述初始化接口负责将待同步的进程的字段进行初始化;
4、所述加入同步接口负责将全部待同步进程的加入同步过程标志设置为1,以将全部待同步进程纳入待同步的进程集合中,其中,所述待同步的进程集合包括至少一个待同步的进程;
5、所述全部到达同步接口负责确定需要将全部待同步的进程到达的同步位置;并在需要全部待同步的进程到达的同步位置,依据预设的同步策略,对所述待同步的进程集合中的全部待同步的进程进行多进程同步。
6、优选地,该系统还包括回退接口;
7、当需要进行进程回退处理时,所述回退接口负责将当前执行的进程的进程回退深度计数器的值设置为预设的第一阈值,并将当前执行的进程的进程执行进度计数器的值设置为预设的第二阈值;
8、其中,所述预设的第一阈值设置为回退跨越的全部到达同步接口的数量;
9、所述预设的第二阈值设置为当前执行的进程的进程执行进度计数器原始值与两倍的预设的第一阈值之间的差值。
10、优选地,所述全部到达同步接口在需要全部待同步的进程到达的同步位置,依据预设的同步策略,对所述待同步的进程集合中的全部待同步的进程进行多进程同步的过程,包括:
11、依据需要全部待同步的进程到达的同步位置,检查全部待同步的进程的进程执行进度计数器的值是否为0或1;
12、若全部待同步的进程的进程执行进度计数器的值均为0或1的进程,则将当前执行的进程的等待状态参数恢复为0;
13、将当前执行的进程的进程执行进度计数器的值自增1,若当前执行的进程的进程回退深度计数器的值为非0,则将当前执行的进程的进程回退深度计数器的值减1;
14、将信号量数组中当前执行的进程的进程号对应的行设置为有信号状态;
15、检查当前执行的进程的等待状态参数是否为0;
16、若当前执行的进程的等待状态参数为0,则检查所有待同步的进程中是否存在进程回退深度计数器的值为非0的进程;
17、若当前执行的进程的等待状态参数为非0,则统计所有待同步的进程中初始化状态参数为1、等待状态参数为0的进程的个数;
18、若所有待同步的进程中初始化状态参数为1、等待状态参数为0的进程的个数为0,则将所有待同步的进程的等待状态参数设置为0,并返回执行所述检查当前执行的进程的等待状态参数是否为0的操作;
19、若所有待同步的进程中不存在进程回退深度计数器的值为非0的进程,则进行非回退处理,并将当前执行的进程的进程执行进度计数器的值自增1;
20、若所有待同步的进程中存在有进程回退深度计数器的值为非0的进程,则判断当前执行的进程的进程回退深度计数器的值是否为非0;
21、若当前执行的进程的进程回退深度计数器的值为0,则返回执行所述检查当前执行的进程的等待状态参数是否为0的操作。
22、优选地,所述进程非回退处理,包括:
23、确定所有进程回退深度计数器的值为0的进程中进程执行进度计数器的值为最大值的第一目标进程的进程执行进度计数器的值;并计算当前执行的进程的进程执行进度计数器的值与所述第一目标进程的进程执行进度计数器的值之间的第一差值;
24、判断所述第一差值是否小于-2;
25、若所述第一差值小于-2,则将当前执行进程的等待状态参数设置为1;
26、若所述第一差值大于-2,则令在信号量数组中当前执行的进程的进程号对应的列中,所有进程的所述第一差值大于-2的进程的进程号对应的行索引出信号量集合进行等待;
27、判断当前执行的进程的等待时长是否超过预设的第一时长;
28、若当前执行的进程的等待时长未超过所述预设的第一时长,则将信号量数组中当前执行的进程的进程号对应的列设置为无信号状态的操作;
29、若当前执行的进程的等待时长超过所述预设的第一时长,则返回执行所述检查当前执行的进程的等待状态参数是否为0的操作;
30、若所述第一差值等于-2,则将信号量数组中当前执行的进程的进程号对应的列设置为无信号状态。
31、优选地,若当前执行的进程的进程回退深度计数器的值为非0,则通过所述回退接口进行进程回退处理。
32、优选地,所述进程非回退处理,包括:
33、确定全部待同步的进程中进程回退深度计数器的值为最大值的进程的进程回退深度计数器对应的值,并分别计算所有进程回退深度计数器的值为非0的进程的进程回退深度计数器的值与最大值的进程回退深度计数器的值之间的第二差值,并返回执行所述判断当前的进程的进程回退深度计数器的值是否为全部待同步的进程中最小且唯一的进程回退深度计数器的值;
34、若当前执行的进程的进程回退深度计数器是全部待同步的进程中最小且唯一的进程回退深度计数器的值,则返回执行所述检查当前执行的进本文档来自技高网...
【技术保护点】
1.一种多进程同步系统,其特征在于,包括:初始化接口、加入同步接口、全部到达同步接口;
2.根据权利要求1所述的系统,其特征在于,该系统还包括回退接口;
3.根据权利要求2所述的系统,其特征在于,所述全部到达同步接口在需要全部待同步的进程到达的同步位置,依据预设的同步策略,对所述待同步的进程集合中的全部待同步的进程进行多进程同步的过程,包括:
4.根据权利要求3所述的系统,其特征在于,所述进程非回退处理,包括:
5.根据权利要求3所述的系统,其特征在于,若当前执行的进程的进程回退深度计数器的值为非0,则进行进程回退处理。
6.根据权利要求5所述的系统,其特征在于,所述进程非回退处理,包括:
7.根据权利要求1所述的系统,其特征在于,该系统还包括退出同步接口;
8.根据权利要求4或5所述的系统,其特征在于,所述预设的第一时长和所述预设的第二时长依据进程同步测试场景需求来设置。
9.一种多进程同步设备,其特征在于,包括:一个或多个处理器,以及存储器;
10.一种可读存储介质,其
...【技术特征摘要】
1.一种多进程同步系统,其特征在于,包括:初始化接口、加入同步接口、全部到达同步接口;
2.根据权利要求1所述的系统,其特征在于,该系统还包括回退接口;
3.根据权利要求2所述的系统,其特征在于,所述全部到达同步接口在需要全部待同步的进程到达的同步位置,依据预设的同步策略,对所述待同步的进程集合中的全部待同步的进程进行多进程同步的过程,包括:
4.根据权利要求3所述的系统,其特征在于,所述进程非回退处理,包括:
5.根据权利要求3所述的系统,其特征在于,若当前执行的进程的进程回退深度计数器的值为非0,则进行进程回退处理。
<...【专利技术属性】
技术研发人员:刘大勇,王林,何贤卫,
申请(专利权)人:南昌勤胜电子科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。