System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据处理,具体而言,涉及一种进程的数据处理方法、装置、电子设备及存储介质。
技术介绍
1、数据交换产品需要对包含子连接的协议进行网络代理,即需要在系统中的不同进程之间进行数据通信。
2、对进程的数据处理方式有多种,当涉及到大量数据进行增、删、改、查操作时,通常会选择共享内存。数据结构中哈希表通过哈希值查找能够高效率添加、删除、查找数据,传统的技术方法通常采用锁来保护对共享内存中数据的读写,但是,使用锁会存在其他进程同时访问引起的数据竞争导致性能存在瓶颈的问题,而且锁使用不当容易引发死锁。
3、现有技术为了避免在对进程进行处理时,对其他进程造成影响,采用共享内存的方式给无锁哈希表分配内存,但是依然存在问题,若两个进程的不同数据通过哈希算法计算出的哈希值相同,会导致数据在共享内存进行增、删、改、查时出现冲突问题,例如,为对内存回收做延迟处理,当a进程在删除前查询并正在读取数据时,b进程删除了改数据并对内存进行回收,c进程此时将数据写入b进程回收的内存中,导致a进程读取到了错误数据。
技术实现思路
1、本申请实施例的目的在于提供一种进程的数据处理方法、装置、电子设备及存储介质,可以提升进程的数据处理效率,避免对数据进行处理时造成的与其他进程的冲突问题,也避免了内存回收时的冲突问题,提高了进程并发的性能,提高共享内存的使用率,减少了对内存空间的占用。
2、第一方面,本申请实施例提供了一种进程的数据处理方法,所述方法包括:
3、创建进
4、根据所述共享内存空间接收进程返回的地址空间数据;
5、获得所述地址空间数据的哈希值和第一键值;
6、根据所述哈希值和所述第一键值获得所述键值获取状态;
7、根据所述键值获取状态对所述地址空间数据进行数据处理。
8、在上述实现过程中,根据地址空间数据的哈希值获得地址空间数据需要进行处理的状态,再针对性地对其进行数据处理,可以提升进程的数据处理效率,避免对数据进行处理时造成的与其他进程的冲突问题,也避免了内存回收时的冲突问题,提高了进程并发的性能,提高共享内存的使用率,减少了对内存空间的占用。
9、进一步地,所述根据所述哈希值和所述第一键值获得所述键值获取状态的步骤,包括:
10、获得所述哈希值在哈希表中对应的哈希桶的位置信息;
11、对所述位置信息中哈希桶指向的无锁链表进行遍历,得到遍历结果;
12、将所述第一键值与所述遍历结果中的第二键值进行对比,得到所述键值获取状态。
13、在上述实现过程中,根据哈希值对哈希表中对应的哈希桶的无锁链表进行遍历,并将遍历结果进行对比,可以提高遍历结果的可用性,便于快速、准确地得到键值获取状态。
14、进一步地,所述对所述位置信息中哈希桶指向的无锁链表进行遍历,得到遍历结果的步骤,包括:
15、查找所述哈希桶指向的无锁链表的头结点;
16、从所述头结点开始进行并发操作,并配置所述进程的计数器为奇数,得到所述无锁链表中每个结点的第二键值,确定所述第二键值为所述遍历结果。
17、在上述实现过程中,根据头结点进行并发操作,并配置计数器为奇数,可以有效解决多进程进行数据处理过程中产生的差异问题,提高对无锁链表的访问效率。
18、进一步地,所述根据所述键值获取状态对所述地址空间数据进行数据处理的步骤,包括:
19、若所述键值获取状态为未插入,将所述地址空间数据插入无锁链表中;
20、若所述键值获取状态为未插入,判断是否需要对所述地址空间数据进行删除,若需要对所述地址空间数据进行删除,将所述地址空间数据对应的无锁链表结点标记为删除,若不需要对所述地址空间数据进行删除,获得返回信息。
21、在上述实现过程中,根据地址空间数据的不同状态对地址空间数据进行增加、删除、查询,可以快速地实现进程,并保证保证进程的数据一致性,提高效率。
22、进一步地,所述将所述地址空间数据插入无锁链表中的步骤,包括:
23、取出无锁队列中的空闲链表结点;
24、将所述地址空间数据放入所述空闲链表结点中;
25、将放入所述地址空间数据后的空闲链表结点插入所述无锁链表中。
26、在上述实现过程中,将地址空间数据放入空闲链表结点中,再将该空闲链表结点插入无锁链表中,无需占用、查找无锁链表中已有的结点,同时不会造成对数据的处理冲突。
27、进一步地,所述将放入所述地址空间数据后的空闲链表结点插入所述无锁链表中的步骤,包括:
28、将所述遍历结果中的第二键值由大到小进行排列,得到键值列表;
29、查找所述键值列表中的插入目标结点;
30、将所述放入所述地址空间数据后的空闲链表结点插入所述插入目标结点的前一个位置,并将所述放入所述地址空间数据后的空闲链表结点的索引值更改为所述插入目标结点的索引值,将所述插入目标结点的索引值更改为所述放入所述地址空间数据后的空闲链表结点的索引值。
31、在上述实现过程中,将遍历结果的索引值由小到大进行排列,可以快速地找到插入目标结点,使得地址空间数据能够准确有效地插入对应的位置,缩短对遍历结果的查找时间。
32、进一步地,所述将所述地址空间数据对应的无锁链表结点标记为删除的步骤,还包括:
33、获取所述地址空间数据对应的无锁链表结点的第一键值;
34、根据所述第一键值查找到所述地址空间数据对应的无锁链表结点在所述无锁链表中的位置;
35、将所述地址空间数据对应的无锁链表结点所在位置的前一个结点的索引值更改为所述地址空间数据对应的无锁链表结点的索引值;
36、将所述地址空间数据对应的无锁链表结点的预设字段的值设置为阈值。
37、在上述实现过程中,将地址空间数据对应的无锁链表结点的前一个结点的索引值进行更改,并将地址空间数据对应的无锁链表结点的预设字段进行更改,保证地址空间数据对应的无锁链表结点发生变动时,其他进程不能对其进行更改,确保相应的进程能够顺利进行。
38、进一步地,所述将所述地址空间数据对应的无锁链表结点标记为删除的步骤,还包括:
39、当所述进程结束时,结束所述并发操作,将所述进程对应的计数器设置为偶数,得到计数器总数;
40、若所述计数器总数为偶数,将标记为删除的地址空间数据对应的无锁链表结点进行回收。
41、在上述实现过程中,将进程对应的计数器设置为偶数,确保没有其他进程需要再对标记为删除的地址空间数据对应的无锁链表结点进行更改,能有效避免进程的任务冲突。
42、进一步地,所述创建进程的共享内存空间的步骤,包括:
43、创建共享内存对象;
44、配置所述共享内存对象的空间大小;
45、将本文档来自技高网...
【技术保护点】
1.一种进程的数据处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的进程的数据处理方法,其特征在于,所述根据所述哈希值和所述第一键值获得所述键值获取状态的步骤,包括:
3.根据权利要求2所述的进程的数据处理方法,其特征在于,所述对所述位置信息中哈希桶指向的无锁链表进行遍历,得到遍历结果的步骤,包括:
4.根据权利要求3所述的进程的数据处理方法,其特征在于,所述根据所述键值获取状态对所述地址空间数据进行数据处理的步骤,包括:
5.根据权利要求4所述的进程的数据处理方法,其特征在于,所述将所述地址空间数据插入无锁链表中的步骤,包括:
6.根据权利要求5所述的进程的数据处理方法,其特征在于,所述将放入所述地址空间数据后的空闲链表结点插入所述无锁链表中的步骤,包括:
7.根据权利要求4所述的进程的数据处理方法,其特征在于,所述将所述地址空间数据对应的无锁链表结点标记为删除的步骤,还包括:
8.根据权利要求4所述的进程的数据处理方法,其特征在于,所述将所述地址空间数据对应的无锁链表结点标记为删除
9.根据权利要求1所述的进程的数据处理方法,其特征在于,所述创建进程的共享内存空间的步骤,包括:
10.一种进程的数据处理装置,其特征在于,所述装置包括:
11.一种电子设备,其特征在于,包括存储器及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行根据权利要求1至9中任一项所述的进程的数据处理方法。
12.一种存储介质,其特征在于,其存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的进程的数据处理方法。
...【技术特征摘要】
1.一种进程的数据处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的进程的数据处理方法,其特征在于,所述根据所述哈希值和所述第一键值获得所述键值获取状态的步骤,包括:
3.根据权利要求2所述的进程的数据处理方法,其特征在于,所述对所述位置信息中哈希桶指向的无锁链表进行遍历,得到遍历结果的步骤,包括:
4.根据权利要求3所述的进程的数据处理方法,其特征在于,所述根据所述键值获取状态对所述地址空间数据进行数据处理的步骤,包括:
5.根据权利要求4所述的进程的数据处理方法,其特征在于,所述将所述地址空间数据插入无锁链表中的步骤,包括:
6.根据权利要求5所述的进程的数据处理方法,其特征在于,所述将放入所述地址空间数据后的空闲链表结点插入所述无锁链表中的步骤,包括:
7.根据权利要求...
【专利技术属性】
技术研发人员:梁一帆,范瑞强,
申请(专利权)人:湖北天融信网络安全技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。