说明:收录25万 73个行业的国家标准 支持批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210699473.X (22)申请日 2022.06.20 (71)申请人 国网河北省电力有限公司电力科 学 研究院 地址 050021 河北省石家庄市裕华区体 育 南大街238号 申请人 国家电网有限公司   国网河北能源技 术服务有限公司 (72)发明人 刘振 庞先海 张志猛 田霖  张达 胡涛 刘良帅  (74)专利代理 机构 石家庄国为知识产权事务所 13120 专利代理师 刘少卿 (51)Int.Cl. G06F 9/50(2006.01)G06F 9/54(2006.01) (54)发明名称 动态数据竞争检测方法、 装置、 终端及存储 介质 (57)摘要 本发明提供一种动态数据竞争检测方法、 装 置、 终端及存储介质。 该方法包括: 初始化各线 程 的向量时钟, 并基于sub ‑hb关系在线程创建、 线 程等待、 线程发送信号和线程等待信号时同步更 新各线程的向量时钟; 根据各线程获取锁和释放 锁的状态, 分别更新各线程对应的锁集; 根据各 线程的向量时钟值以及各线程的锁 集, 对各线程 进行数据竞争检测; 根据数据竞争检测结果, 调 整动态缓冲区的大小。 本发明能够减少检测结果 误报问题, 减少漏报的情形, 降低算法复杂度。 权利要求书3页 说明书11页 附图6页 CN 115048220 A 2022.09.13 CN 115048220 A 1.一种动态数据竞争检测方法, 其特 征在于, 包括: 初始化各线程的向量时钟, 并基于sub ‑hb关系在线程创建、 线程等待、 线程发送信号和 线程等待信号时同步更新各线程的向量时钟; 根据各线程获取锁和释放锁的状态, 分别更新各线程对应的锁集, 所述锁集包含对应 线程持有的全部锁; 根据各线程的向量时钟值以及各线程的锁集, 对各线程进行 数据竞争检测; 根据数据竞争检测结果, 调整动态缓冲区的大小, 所述动态缓冲区用于存储各线程中 共享变量的访问序列。 2.根据权利要求1所述的动态数据竞争检测方法, 其特征在于, 所述初始化各线程的向 量时钟, 并基于 sub‑hb关系在 线程创建、 线程等待、 发送信号和等待信号时同步更新各线程 的向量时钟, 包括: 初始化各线程的向量 时钟时, 将当前线程的本地 时钟值置为1, 其他线程的时钟值置为 0; 线程创建时, 将子线程的初始化向量时钟与父线程的向量时钟合并取最大值, 并赋值 给子线程的向量时钟, 父线程的本地时钟值加1; 线程等待时, 将等待线程的向量时钟与被等待线程的向量时钟合并取最大值, 并赋值 给等待线程的向量时钟, 被等待 线程的本地时钟值加1; 线程发送信号时, 将当前线程的向量时钟与同步对象的向量时钟合并取最大值, 并赋 值给同步对象的向量时钟, 当前线程的本地时钟 加1; 线程接收信号时, 将当前线程的向量时钟与同步对象的向量时钟合并取最大值, 并赋 值给当前线程的向量时钟。 3.根据权利要求1所述的动态数据竞争检测方法, 其特征在于, 所述根据 各线程的向量 时钟值以及各线程的锁集, 对各线程进行 数据竞争检测, 包括: 当前线程读取变量时, 根据当前线程的向量时钟值以及当前线程的锁集, 进行读写数 据竞争检测; 当前线程写入变量 时, 根据当前线程的向量 时钟值以及当前线程的锁集进行写写数据 竞争检测以及写读数据竞争检测。 4.根据权利要求3所述的动态数据竞争检测方法, 其特征在于, 所述当前线程读取变量 时, 根据当前线程的向量时钟值以及当前线程的锁集, 进行读写数据竞争检测, 包括: 初始化索引值; 判断当前索引值是否小于写访问缓冲区的大小; 当前索引值小于所述写访问缓冲区的大小时, 判断当前线程号是否不等于所述写访问 缓冲区记录的线程号, 并且所述写访问缓冲区记录的线程的本地时钟值是否小于所述写访 问缓冲区中第i个位置记录的时钟值, 所述 i表示当前索引值; 若是, 则继续判断当前线程的锁集与所述写访 问缓冲区第i个位置记录中锁集的交集 是否为空; 若为空, 则检测到读写数据竞争, 若不 为空, 则没有检测到读写数据竞争; 将当前索引值加1, 并跳转到 “判断当前索引值是否小于写访问缓冲区的大小 ”的步骤, 重新判断并执 行后续步骤, 直至当前索引值大于或等于所述写访问缓冲区的大小;权 利 要 求 书 1/3 页 2 CN 115048220 A 2若否, 则将当前索引的值加1, 并跳转到 “判断当前索引i是否小于写访问缓冲区的大 小”的步骤, 重新判断并执行后续步骤, 直至 当前索引值大于或等于所述写访问缓冲区的大 小; 当前索引值大于或等于所述写访问缓冲区的大小时, 判断当前线程号是否不等于读访 问缓冲区记录的线程号, 并且所述读访问缓冲区记录的线程的本地时钟值小于所述读访问 缓冲区第i个位置记录的时钟值; 若是, 则设置共享读标志为真, 并为读缓冲区添加一条新的新纪录; 若否, 则直接为所述读缓冲区添加一条新纪录 。 5.根据权利要求3所述的动态数据竞争检测方法, 其特征在于, 所述当前线程写入变量 时, 根据当前线程的向量时钟值以及当前线程的锁集进行写 写数据竞争检测, 包括: 初始化索引值; 判断当前索引值是否小于写访问缓冲区的大小; 当前索引值小于所述写访问缓冲区的大小时, 判断当前线程号是否不等于所述写访问 缓冲区记录的线程号, 并且所述写访问缓冲区记录的线程的本地时钟值小于所述写访问缓 冲区第i个位置记录的时钟值; 若是, 则继续判断当前线程的锁集与所述写访 问缓冲区第i个位置记录锁集的交集是 否为空; 若为空, 则检测到读写数据竞争, 若不 为空, 则没有检测到写 写数据竞争; 将当前索引值加1, 并跳转到 “判断当前索引i是否小于写访问缓冲 区的大小 ”的步骤, 重新判断并执 行后续步骤, 直至当前索引值大于或等于所述写访问缓冲区的大小; 若否, 则将当前索引的值加1, 并跳转到 “判断当前索引i是否小于写访问缓冲区的大 小”的步骤, 重新判断并执行后续步骤, 直至 当前索引值大于或等于所述写访问缓冲区的大 小; 若当前索引值大于或等于所述写访 问缓冲区的大小时, 重新初始化索引值, 进行写读 数据竞争检测。 6.根据权利要求5所述的动态数据竞争检测方法, 其特征在于, 所述重新初始化索引 值, 进行写读数据竞争检测, 包括: 初始化索引值; 判断当前索引值是否小于读访问缓冲区的大小; 若是, 则判断当前线程号是否不等于所述读访 问缓冲区记录的线程号, 并且所述读访 问缓冲区记录的线程的本地时钟值小于得到读访问缓冲区第i个位置记录的时钟值; 若是, 则继续判断当前线程的锁集与所述读访 问缓冲区第i个位置记录锁集的交集是 否为空; 若为空, 则检测到写读数据竞争, 若不 为空, 则没有检测到写读数据竞争; 将当前索引的值加1, 并跳转到 “判断当前索引i是否小于写访问缓冲区的大小 ”的步 骤, 重新判断并执 行后续步骤, 直至当前索引值大于或等于所述读访问缓冲区的大小; 当前索引值大于或等于所述读访 问缓冲区的大小时, 则设置共享读标志为假, 并为写 缓冲区添加一条新的新纪录 。 7.根据权利要求1所述的动态数据竞争检测方法, 其特征在于, 所述根据 数据竞争检测权 利 要 求 书 2/3 页 3 CN 115048220 A 3

.PDF文档 专利 动态数据竞争检测方法、装置、终端及存储介质

文档预览
中文文档 21 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共21页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 动态数据竞争检测方法、装置、终端及存储介质 第 1 页 专利 动态数据竞争检测方法、装置、终端及存储介质 第 2 页 专利 动态数据竞争检测方法、装置、终端及存储介质 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 13:30:43上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。