【技术实现步骤摘要】
对象更新、读取方法及装置
[0001]本说明书一个或多个实施例涉及计算机
,尤其涉及一种对象更新、读取方法及装置。
技术介绍
[0002]多核处理系统能够在单位时间内处理更多的任务,处理能力更强,应用也越发广泛。在利用多核处理系统运行多线程任务时,该多个线程之间可以具有都能够操作的共享对象。并且,在更新所述的共享对象时,同一时刻只能有一个线程更新,以避免线程冲突导致数据错误。当前技术中,各个线程之间可以申请锁(Lock),成功获取到锁的线程可以操作该共享对象,未获取到锁的线程只能等待。需要说明,这里的锁通常为全局变量,从而线程申请锁的过程中通常需要进行跨CPU核通信。
技术实现思路
[0003]本说明书一个或多个实施例描述了一种对象更新、读取方法及装置,可以确保针对原对象的读取操作的安全性。
[0004]第一方面,提供了一种对象更新方法,包括:任意的第一CPU核的第一线程请求获取写锁;所述写锁用于表示对所述第一对象执行更新的权限;读取第一指针,所述第一指针指向所述第一对象;根据所述第一指针,读取 ...
【技术保护点】
【技术特征摘要】
1.一种对象更新方法,应用于多核处理系统,所述多核处理系统包括多个CPU,每个CPU包括若干CPU核;待更新的第一对象是多个线程的共享对象;所述方法包括:任意的第一CPU核的第一线程请求获取写锁;所述写锁用于表示对所述第一对象执行更新的权限;读取第一指针,所述第一指针指向所述第一对象;根据所述第一指针,读取所述第一对象并复制,得到第二对象;对所述第二对象的内容进行调整,得到调整后的第二对象;修改所述第一指针,以使其指向所述调整后的第二对象;释放所述写锁。2.根据权利要求1所述的方法,还包括:针对所述调整后的第二对象,设置对应的第二标志位数组;将所述第二标志位数组中的每个标志位分配给一个线程,并初始化每个标志位的取值;其中,初始化后的每个标志位的取值在对应线程开始访问所述调整后的第二对象时被修改,且在结束访问时被恢复。3.根据权利要求2所述的方法,还包括:申请第二内存区域;将调整后的第二对象以及所述第二标志位数组按照先后顺序,连续存放在所述第二内存区域;所述修改所述第一指针包括:将所述第一指针的值修改为所述第二内存区域的地址。4.根据权利要求1所述的方法,其中,所述读取第一指针,包括:从所述第一CPU核的本地缓存中读取所述第一指针;或,从第二CPU核的本地缓存中读取所述第一指针;或,从内存中读取所述第一指针。5.根据权利要求1所述的方法,还包括:向其它CPU核的其它线程发送指针更新消息,以使所述其它线程更新其它CPU核的本地缓存中存储的修改前的所述第一指针。6.根据权利要求1所述的方法,还包括:根据所述第一指针,获取所述第一对象的第一地址;将所述第一地址加入地址回收队列,所述地址回收队列用于存放无用对象的地址。7.根据权利要求6所述的方法,还包括:回收线程从所述回收队列中读取所述第一地址;所述回收线程为任一负责回收无用对象的线程;判断所述第一地址对应的所述第一对象是否满足删除条件;在所述第一对象满足删除条件的情况下,删除所述第一对象。8.根据权利要求7所述的方法,所述判断所述第一地址对应的所述第一对象是否满足删除条件,包括:遍历所述第一对象的第一标志位数组中的每个标志位的取值是否均为初始值;其中,所述第一标志位数组中的每个标志位对应于一个线程,其对应取值为初始值指示对应线程
未访问所述第一对象;若是,则确定所述第一对象满足删除条件。9.根据权利要求1所述的方法,其中,针对所述第一指针的读取为原子操作。10.一种对象读取方法,应用于多核处理系统,所述多核处理系统包括多个CPU,每个CPU包括若干CPU核;待读取的第一对象是多个线程的共享对象;所述方法包括:任意的第一CPU核的第一线程读取第一指针,所述第一指针指向所述第一对象;所述第一对象具有对应的第一标志位数组,其中的每个标志位对应于一个线程;根据所述第一指针,读取所述第一标志位数组中对应于所述第一线程的第一标志位;将所述第一标志位的取值修改为预定值;所述预定值指示所述第一线程正在访问所述第一对象;读取所述第一对象;在读取所述第一对象后,将所述第一标志位的取值恢复为初始值。11.根据权利要求10所述的方法,其中,所述第一对象和所述第一标志位数组按照先后顺序存储在第一内存区域中;所述第一指针的值为所述第一内存区域的地址。12.根据权利要求11所述的方法,其中,在所述第一内存区域中,所述第一对象在前,所述第一标志位数组在后;所述根据所述第一指针,读取所述第一标志位数组中对应于所述第一线程的第一标志位,包括:根据所述第一内存区域的地址、所述第一对象的大小、所述第一线程的位置索引以及标志位的大小,读取所述第一标志位;所述读取所述第一对象,包括:根据所述第一内存区域的地址,读取所述第一对象。13.根据权利要求11所述的方法,其中,在所述第一内存区域中,所述第一标志位数组在前,所述第一对象在后;所述根据所述第一指针,读取所述第一标志位数组中对应于所述第一线程的第一标志位,包括:根据所述第一内存区域的地址、所述第一线程的位置索引以及标志位的大小,读取所述第一标志位;所述读取所述第一对象,包括:根...
【专利技术属性】
技术研发人员:洪春涛,
申请(专利权)人:支付宝杭州信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。