一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

单写入者多读取者的数据存储和读取方法、装置及设备与流程

2022-02-20 23:16:33 来源:中国专利 TAG:

技术特征:
1.一种单写入者多读取者的数据存储和读取方法,其特征在于,包括:读取线程获取数组中读取位置原子变量的值以及读取位置变量的值;设置读标志变量,所述读标志变量的值为读取位置原子变量的值;将所述读取位置原子变量的值增加预设的待读取数据的大小;若读标志变量的值与所述数组中数据读取位置变量的值相同,则基于所述数据读取位置变量所指的位置,从所述数组读取所述待读取数据;若读标志变量的值与所述数组中数据读取位置变量的值不相同,则有其他读取者线程正在读取,不从所述数组读取所述待读取数据,并将数值增加后的读取原子位置变量的值减去预设的待读取数据的大小。2.如权利要求1所述的单写入者多读取者的数据存储和读取方法,其特征在于,基于所述数据读取位置变量所指的位置,从所述数组读取预设的待读取数据,包括:获取所述数组中写入位置变量的值;根据所述读取位置变量的值和所述写入位置变量的值确定所述数组的剩余读取空间;若所述剩余读取空间大于或等于所述待读取数据所占的空间,则基于所述数据读取位置变量所指的位置,从所述数组读取所述待读取数据。3.如权利要求2所述的单写入者多读取者的数据存储和读取方法,其特征在于,根据所述读取位置变量的值和所述写入位置变量的值确定所述数组的剩余读取空间,包括:若所述写入位置变量的值小于所述读取位置变量的值,则所述剩余读取空间为所述数组的容量值与所述写入位置变量的值之和减去所述读取位置变量的值;若所述写入位置变量的值大于等于所述读取位置变量的值,则所述剩余读取空间为写入位置变量的值减去所述读取位置变量的值。4.如权利要求2所述的单写入者多读取者的数据存储和读取方法,其特征在于,在所述剩余读取空间小于所述待读取数据所占的空间的情况下,不读取所述待读取数据。5.如权利要求2所述的单写入者多读取者的数据存储和读取方法,其特征在于,基于所述数据读取位置变量所指的位置,从所述数组读取预设的待读取数据,还包括:当所述数组读至尾部元素位置,且所述待读取数据未完全读取所述数组时,将所述待读取数据中未读取所述数组的部分从所述数组的头部元素位置进行读取,直到读取待读取数据大小的数据。6.如权利要求5所述的单写入者多读取者的数据存储和读取方法,其特征在于,若读取位置变量的值加上待读取数据的大小大于数组大小,则将数值增加后的读取原子位置变量的值减去数组大小。7.如权利要求1所述的单写入者多读取者的数据存储和读取方法,其特征在于,还包括写入线程,包括:根据所述读取位置变量的值和所述写入位置变量的值确定可写入数据的大小;若所述可写入数据的大于期望写入数据的大小,则基于所述写入位置变量所指的位置,写入所述数组存储的数据,并更新所述写入位置变量的值,其中,所述期望写入数据的大小为所述待读取数据的大小减去所述剩余读取空间的大小。8.如权利要求6所述的单写入者多读取者的数据存储和读取方法,其特征在于,根据所述读取位置变量的值和所述写入位置变量的值确定可写入数据的大小,包括:
若所述写入位置变量的值小于所述读取位置变量的值,则根据所述读取位置变量的值减去所述写入位置变量的值的差值再减一,确定可写入数据的大小;若所述写入位置变量的值大于所述读取位置变量的值,则所述可写入数据的大小为所述数组的容量值与所述读取位置变量的值之和减去所述写入位置变量的值再减一。9.一种单写入者多读取者的数据存储和读取装置,其特征在于,包括:获取模块,用于使读取线程获取数组中读取位置原子变量的值以及读取位置变量的值;赋值模块,用于设置读标志变量,所述读标志变量的值为读取位置原子变量的值;读取位置原子变量调整模块,用于将所述读取位置原子变量的值增加预设的待读取数据的大小;处理模块,用于若读标志变量的值与所述数组中数据读取位置变量的值相同,则基于所述数据读取位置变量所指的位置,从所述数组读取所述待读取数据;若读标志变量的值与所述数组中数据读取位置变量的值不相同,则有其他读取者线程正在读取,不从所述数组读取所述待读取数据,并将数值增加后的读取原子位置变量的值减去预设的待读取数据的大小。10.一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其特征在于,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。

技术总结
本公开的实施例提供了一种单写入者多读取者的数据存储和读取方法、装置及设备。所述方法包括:读取线程获取数组中读取位置原子变量的值以及读取位置变量的值;设置读标志变量,所述读标志变量的值为读取位置原子变量的值;将所述读取位置原子变量的值增加预设的待读取数据的大小;若读标志变量的值与所述数组中数据读取位置变量的值相同,则基于所述数据读取位置变量所指的位置,从所述数组读取所述待读取数据;若不相同,则有其他读取者线程正在读取,不从所述数组读取所述待读取数据,并将数值增加后的读取原子位置变量的值减去预设的待读取数据的大小。以此方式,可以实现不加锁的情况下解决共享内存的方案中多个读取进程之间的数据竞争问题。进程之间的数据竞争问题。进程之间的数据竞争问题。


技术研发人员:姚磊磊 陈勇 马维士 刘加瑞
受保护的技术使用者:北京华云安信息技术有限公司
技术研发日:2021.11.25
技术公布日:2022/2/18
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献