[发明专利]一种数据竞争检测方法及装置有效
| 申请号: | 201910354923.X | 申请日: | 2019-04-29 |
| 公开(公告)号: | CN110083539B | 公开(公告)日: | 2020-11-13 |
| 发明(设计)人: | 陈智颖;余平 | 申请(专利权)人: | 广州华多网络科技有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王宝筠 |
| 地址: | 511442 广东省广*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 数据 竞争 检测 方法 装置 | ||
本发明提供一种数据竞争检测方法及装置,该方案包括:基于预先建立的全局映射Map,获取当前所执行的线程的容器类的内置属性,容器类的内置属性预先存储于全局映射Map中,判断内置属性所对应的值value是否为空,若不为空,判断内置属性所对应的内置线程是否与当前所执行的线程一致,若不一致,则确定当前所执行的线程的容器类发生数据竞争。基于本发明,通过比较容器类的内置属性所对应的内置线程与容器类当前所执行的线程,确定容器类是否满足发生数据竞争的条件,从而有效准确地检测出会发生数据竞争的容器类,实现减少因不确定哪些容器类会发生数据竞争而导致的资源浪费的目的。
技术领域
本发明涉及计算机编程开发技术领域,尤其涉及一种数据竞争检测方法及装置。
背景技术
在计算机编程领域中,若某一容器类中发生数据竞争,会导致程序的运行结果不可预知,大大影响程序的可靠性。为了保证程序的可靠性,开发者通过在会发生数据竞争的容器类中增加互斥锁,来消除数据竞争。
目前,现有的方案是对程序中所有的容器类添加互斥锁,保证消除所有容器类的数据竞争。然而,并不是所有的容器类都会在执行操作时发生数据竞争,个别容器类所增加的互斥锁是无用的,现有的方案存在着巨大的无用消耗,大大浪费系统资源。
发明内容
有鉴于此,本发明实施例提供一种数据竞争检测方法及装置,以解决因不确定哪些容器类会发生数据竞争而导致资源浪费的问题。
为实现上述目的,本发明实施例提供如下技术方案:
本发明实施例第一方面公开了一种数据竞争检测方法,所述数据竞争检测方法包括:
基于预先建立的全局映射Map,获取当前所执行的线程的容器类的内置属性,所述容器类的内置属性预先存储于所述全局映射Map中;
判断所述内置属性所对应的值value是否为空;
若不为空,判断所述内置属性所对应的内置线程是否与所述当前所执行的线程一致;
若不一致,则确定所述当前所执行的线程的容器类发生数据竞争。
优选的,在上述数据竞争检测方法中,所述容器类的内置属性预先存储于所述全局映射Map中的过程,包括:
创建全局映射Map;
建立对应所述容器类的对象;
将所述对象的地址作为所述容器类对应的键key,将所述对象作为所述容器类的内置属性所对应的值value;
建立所述容器类对应的所述键key和所述值value的对应关系,存储于所述全局映射Map中。
优选的,在上述数据竞争检测方法中,若所述当前所执行的线程为写操作线程,还包括:
若所述内置属性所对应的值value为空,将所述当前所执行的线程作为内置线程存储至所述内置属性中,并执行所述写操作线程。
优选的,在上述数据竞争检测方法中,若所述当前所执行的线程为写操作线程,还包括:
若所述内置属性所对应内置的线程与所述当前所执行的线程一致,执行所述写操作线程。
优选的,在上述数据竞争检测方法中,若所述当前所执行的线程为读操作线程,还包括:
若所述内置属性所对应内置的线程与所述当前所执行的线程一致,执行所述读操作线程。
优选的,在上述数据竞争检测方法中,在确定所述当前所执行的线程的容器类发生数据竞争之后,还包括:
为发生数据竞争的所述容器类添加互斥锁。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州华多网络科技有限公司,未经广州华多网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910354923.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种并发程序噪声注入方法
- 下一篇:接口测试方法及装置
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置





