一种多线程实现方法、装置、计算机设备以及存储介质制造方法及图纸

技术编号:38711004 阅读:8 留言:0更新日期:2023-09-08 14:53
本发明专利技术公开了一种多线程实现方法、装置、计算机设备以及存储介质,涉及计算机技术领域,其中方法包括:获取并发的各个线程的操作指令;确定操作指令对应的待操作变量是否相同;若相同,则根据操作指令,执行与操作指令对应的执行脚本,对待操作变量进行数据操作,实现并行执行各个线程,其中,执行脚本包括延迟删除脚本、插入脚本和查询脚本;若不相同,则并行执行各个线程。本发明专利技术中利用执行脚本,避免了现有技术中利用加锁,并行执行线程,导致的程序死锁或崩溃等难以排查问题,降低开发和维护的成本,保证了安全运行线程,同时,提高了线程运行的速度,以及实现了在数据量增大的情况下,仍能保持线程进行高性能的运行。仍能保持线程进行高性能的运行。仍能保持线程进行高性能的运行。

【技术实现步骤摘要】
一种多线程实现方法、装置、计算机设备以及存储介质


[0001]本专利技术涉及计算机
,特别涉及一种多线程实现方法、装置、计算机设备以及存储介质。

技术介绍

[0002]目前在项目中对于键值数据(key

value数据)的存储都是采用STL(标准模板库)中map(容器)实现的,其对于多线程的情况需要通过加锁实现读写安全。
[0003]但是在并发和压力较大的项目中,加锁操作会对并发能力有很大的影响,如由于在实现某些操作时,比较耗时,导致阻塞整个map的操作,同时开发维护的成本也比较高,需要小心地使用锁机制,锁的使用有错误,则会导致程序死锁或崩溃等难以排查的问题,增加了开发和维护的成本。

技术实现思路

[0004]本专利技术的目的是提供一种多线程实现方法、装置、计算机设备以及存储介质,利用执行脚本,避免了现有技术中利用加锁,并行执行线程,导致的程序死锁或崩溃等难以排查问题,降低开发和维护的成本,保证了安全运行线程,同时,提高了线程运行的速度,以及实现了在数据量增大的情况下,仍能保持线程进行高性能的运行。
[0005]依据本专利技术的一个方面,本专利技术提供了一种多线程实现方法,包括:
[0006]获取并发的各个线程的操作指令;
[0007]确定所述操作指令对应的待操作变量是否相同;
[0008]若相同,则根据所述操作指令,执行与所述操作指令对应的执行脚本,对所述待操作变量进行数据操作,实现并行执行所述各个线程,其中,所述执行脚本包括延迟删除脚本、插入脚本和查询脚本;
[0009]若不相同,则并行执行所述各个线程。
[0010]可选地,所述根据所述操作指令,执行与所述操作指令对应的执行脚本,对所述待操作变量进行数据操作,实现并行执行所述各个线程,其中,所述执行脚本为插入脚本,包括:
[0011]根据所述操作指令,利用非阻塞原子性操作,分别插入所述待操作变量;其中,所述操作指令为插入指令。
[0012]可选地,所述根据所述操作指令,执行与所述操作指令对应的执行脚本,对所述待操作变量进行数据操作,实现并行执行所述各个线程,其中,所述执行脚本为延迟删除脚本,包括:
[0013]将所述待操作变量另存至暂存变量数据表,并对所述待操作变量设置时间戳;
[0014]根据所述时间戳,删除所述暂存变量数据表中的所述待操作变量。
[0015]可选地,所述根据所述操作指令,执行与所述操作指令对应的执行脚本,对所述待操作变量进行数据操作,实现并行执行所述各个线程之后,还包括:
[0016]确定保存所述待操作变量的数据表的容量是否超过预设阈值;
[0017]若超过所述预设阈值,则执行rehash操作增加所述数据表;
[0018]若未超过所述预设阈值,则不执行所述rehash操作。
[0019]可选地,所述的多线程实现方法,还包括:
[0020]将所述数据表进行划分得到不同的分区;
[0021]根据所述分区,设置对应的分锁。
[0022]可选地,所述执行rehash操作增加所述数据表之前,还包括:
[0023]将所述数据表中所有所述分区对应的分锁锁定。
[0024]可选地,所述根据所述查询脚本,实现对所述待操作变量执行对应的数据查询操作,包括:
[0025]访问所述数据表和/或所述暂存变量数据表,得到所述待操作变量。
[0026]本专利技术还提供一种多线程实现装置,包括:
[0027]线程模块,用于获取并发的各个线程的操作指令;
[0028]判断模块,用于确定所述操作指令对应的待操作变量是否相同;
[0029]第一执行模块,用于若相同,则根据所述操作指令,执行与所述操作指令对应的执行脚本,对所述待操作变量进行数据操作,实现并行执行所述各个线程,其中,所述执行脚本包括延迟删除脚本、插入脚本和查询脚本;
[0030]第二执行模块,用于若不相同,则并行执行所述各个线程。
[0031]本专利技术提供一种计算机设备,包括:
[0032]存储器,用于存储计算机程序;
[0033]处理器,用于执行所述计算机程序时实现如上述所述的多线程实现方法。
[0034]本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上述所述多线程实现方法的步骤。
[0035]可见,本专利技术中利用执行脚本,避免了现有技术中利用加锁,并行执行线程,导致的程序死锁或崩溃等难以排查问题,降低开发和维护的成本,保证了安全运行线程,同时,提高了线程运行的速度,以及实现了在数据量增大的情况下,仍能保持线程进行高性能的运行。本申请还提供一种多线程实现装置、计算机设备以及存储介质,具有上述有益效果。
附图说明
[0036]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0037]图1为本专利技术实施例所提供的一种多线程实现方法的流程图;
[0038]图2为本专利技术实施例所提供的一种多线程实现装置的结构框图;
[0039]图3为本专利技术实施例所提供的一种计算机设备的结构框图。
具体实施方式
[0040]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0041]目前在项目中对于键值数据(key

value数据)的存储都是采用STL(标准模板库)中map(容器)实现的,其对于多线程的情况需要通过加锁实现读写安全。
[0042]但是在并发和压力较大的项目中,加锁操作会对并发能力有很大的影响,如由于在实现某些操作时,比较耗时,导致阻塞整个map的操作,同时开发维护的成本也比较高,需要小心地使用锁机制,锁的使用有错误,则会导致程序死锁或崩溃等难以排查的问题,增加了开发和维护的成本。
[0043]鉴于此,本专利技术提供了一种多线程实现方法,利用执行脚本,避免了现有技术中利用加锁,并行执行线程,导致的程序死锁或崩溃等难以排查问题,降低开发和维护的成本,保证了安全运行线程,同时,提高了线程运行的速度,以及实现了在数据量增大的情况下,仍能保持线程进行高性能的运行。
[0044]下面进行详细介绍,请参考图1,图1为本专利技术实施例所提供的一种多线程实现方法的流程图,本专利技术实施例一种多线程实现方法可以包括:
[0045]步骤S101:获取并发的各个线程的操作本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多线程实现方法,其特征在于,包括:获取并发的各个线程的操作指令;确定所述操作指令对应的待操作变量是否相同;若相同,则根据所述操作指令,执行与所述操作指令对应的执行脚本,对所述待操作变量进行数据操作,实现并行执行所述各个线程,其中,所述执行脚本包括延迟删除脚本、插入脚本和查询脚本;若不相同,则并行执行所述各个线程。2.如权利要求1所述的多线程实现方法,其特征在于,所述根据所述操作指令,执行与所述操作指令对应的执行脚本,对所述待操作变量进行数据操作,实现并行执行所述各个线程,其中,所述执行脚本为插入脚本,包括:根据所述操作指令,利用非阻塞原子性操作,分别插入所述待操作变量;其中,所述操作指令为插入指令。3.如权利要求1所述的多线程实现方法,其特征在于,所述根据所述操作指令,执行与所述操作指令对应的执行脚本,对所述待操作变量进行数据操作,实现并行执行所述各个线程,其中,所述执行脚本为延迟删除脚本,包括:将所述待操作变量另存至暂存变量数据表,并对所述待操作变量设置时间戳;根据所述时间戳,删除所述暂存变量数据表中的所述待操作变量。4.如权利要求1所述的多线程实现方法,其特征在于,所述根据所述操作指令,执行与所述操作指令对应的执行脚本,对所述待操作变量进行数据操作,实现并行执行所述各个线程之后,还包括:确定保存所述待操作变量的数据表的容量是否超过预设阈值;若超过所述预设阈值,则执行rehash操作增加所述数据表;若未超过...

【专利技术属性】
技术研发人员:周春喜
申请(专利权)人:杭州深渡科技有限公司
类型:发明
国别省市:

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

1