【技术实现步骤摘要】
【国外来华专利技术】无锁参考计数相关申请案交叉申请本专利技术要求于2017年3月10日递交的专利技术名称为“无锁参考计数”的第15/456,140号美国非临时专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。
本专利技术涉及使用参考计数器进行存储器管理的技术。
技术介绍
存储器管理系统通常跟踪创建后的存储器对象,并删除不再需要的那些对象,以使所使用的存储器再次变为可用。这种系统也称为垃圾收集器,其通常的工作是维护与每个存储器对象关联的引用计数。例如,引用计数用于跟踪存储器中正在创建或分配的对象,随后删除这些对象。当线程(或进程或其它实体)访问或以其它方式引用该存储器对象时,引用计数会增加。当所述线程对所述存储器对象删除引用时,所述引用计数会减少。当所述引用计数达到零时,假设所述存储器对象不再使用,所述存储器管理器可以释放所述存储器以进行重复使用,从而降低存储器耗尽的可能性。此外,计算系统通常有多个处理器,通过在这些处理器上分配给定的工作负载可以提高计算吞吐量。每个处理器可以具有关联存储器,其运行速度高于主存储器。当多个线程在不同的处理器上执行并访问或共享通用存储器对象时,通常需要将该对象的引用计数从一个存储器传输到另一个存储器,这可能会导致延迟增加和处理效率降低。随着计算系统的规模不断扩大,并行执行的线程数量大幅增加,所述存储器管理可能会导致发布的参考计数指令数量增加,同时系统整体性能也会下降。
技术实现思路
在第一实施例中,提供一种计算机实现的参考计数方法,包括:创建与父线程引用的对象对应的父线程计数器,所述父线程计数器包括分层计数器数据结构;创建子线程的子线程 ...
【技术保护点】
1.一种计算机实现的参考计数方法,其特征在于,包括:创建与父线程引用的对象对应的父线程计数器,所述父线程计数器包括分层计数器数据结构;创建子线程的子线程计数器,所述子线程计数器包括所述分层计数器数据结构,并将对所述对象的所述引用从所述父线程传递到所述子线程;更新所述父线程计数器中的所述分层计数器数据结构以引用所述子线程计数器,并更新所述子线程计数器中的所述分层计数器数据结构以指向所述父线程计数器;当所述子线程完成处理时通知所述父线程计数器。
【技术特征摘要】
【国外来华专利技术】2017.03.10 US 15/456,1401.一种计算机实现的参考计数方法,其特征在于,包括:创建与父线程引用的对象对应的父线程计数器,所述父线程计数器包括分层计数器数据结构;创建子线程的子线程计数器,所述子线程计数器包括所述分层计数器数据结构,并将对所述对象的所述引用从所述父线程传递到所述子线程;更新所述父线程计数器中的所述分层计数器数据结构以引用所述子线程计数器,并更新所述子线程计数器中的所述分层计数器数据结构以指向所述父线程计数器;当所述子线程完成处理时通知所述父线程计数器。2.根据权利要求1所述的计算机实现的方法,其特征在于:创建所述父线程计数器包括初始化所述分层计数器数据结构,以将父计数值设置为初始值1,将所述父线程的状态设置为活动,将子项列表设置为空,并将指针设置为空;创建所述子线程计数器包括初始化所述分层计数器数据结构,以将子计数值设置为初始值1,将所述父线程的状态设置为活动,将子项列表设置为空,并将指针设置为指向所述父线程计数器。3.根据权利要求2所述的计算机实现的方法,其特征在于,更新所述分层计数器数据结构包括:当所述父线程添加对所述对象的引用时,增加所述父线程计数器的所述父计数值;当父线程删除对所述对象的所述引用时,减少所述父线程计数器的所述父计数值;当所述子线程添加对所述对象的引用时,增加所述子引用计数器的所述子计数值;当所述子线程删除对所述对象的所述引用时,减少所述子引用计数器的所述子计数值。4.根据权利要求3所述的计算机实现的方法,其特征在于,还包括:完成处理后,将所述父线程和所述子线程的所述状态从活动改变为非活动;独立修改所述父线程和所述子线程中的子项列表,以添加或删除子计数器;将用于新添加子项的所述指针设置为指向直接父计数器。5.根据权利要求3所述的计算机实现的方法,其特征在于,删除对所述对象的所述引用包括:根据所述子线程计数值确定所述子线程计数器是否已完成处理;检查所述子线程计数器是否有所述子项列表;为响应所述子线程计数器的所述子计数值为零、所述子线程计数器的所述子线程列表为空或所述子项列表中列出的所述子线程全部为非活动以及所述子线程的所述状态为非活动,删除对所述对象的所述引用。6.根据权利要求5所述的计算机实现的方法,其特征在于,还包括:根据所述父计数值确定所述父线程计数器是否已完成处理;检查所述父线程中的所述指针;释放所述存储器中的所述对象,以响应所述指针为空和所述父线程的所述状态为非活动。7.根据权利要求1至6中任一项所述的计算机实现的方法,其特征在于,所述分层计数器数据结构包括计算对所述对象的所述引用数量的计数值,指示所述对象的状态为活动或非活动的变量、子计数器列表以及指向父计数器的指针。8.根据权利要求7所述的计算机实现的方法,其特征在于:指示对所述对象的所述引用数量的所述计数值由所述父线程和所述子线程中的一个独立修改;所述状态从活动状态改变为非活动状态;所述子计数器列表为所述线程中对应的一个线程标识各个子计数器;在初始创建所述线程计数器中的一个时设置所述指针。9.根据权利要求1至8中任一项所述的计算机实现的方法,其特征在于,所述父线程计数器和所述子线程计数器采用无锁参考计数。10.一种用于参考计数的设备,其特征在于,包括:非瞬时性存储器,包括指令;一个或多个处理器,与所述存储器通信,其中所述一个或多个处理器执行所述指令完成以下操作,包括:创建与父线程引用的对象对应的父线程计数器,所述父线程计数器包括分层计数器数据结构;创建子线程的子线程计数器,所述子线程计数器包括所述分层计数器数据结构,并将对所述对象的所述引用从所述父线程传递到所述子线程;无锁定更新所述父线程计数器中的所述分层计数器数据结构以引用所述子线程计数器,并更新所述子线程计数器中的所述分层计数器数据结构以指向所述父线程计数器;当所述子线程完成处理时通知所述父线程计数器。11.根据权利要求10所述的设备,其特征在于:创建所述父线程计数器包括初始化所述分层计数器数据结构,以将父计数值设置为初始值1,将所述父线程的状态设置为活动,将子项列表设置为空,并将指针设置为空;创建所述子线程计数器包括初始化所述分层计数器数据结构,以将子计数值设置为初始值1,将所述父线程的状态设置为活动,将子项列表设置为空,并将指针设置为指向所述父线程计...
【专利技术属性】
技术研发人员:雷扎·亚达尼称,王海川,马林,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。