【并发缺陷】data race数据竞争、atomicity violation原子违背、order violation顺序违背

【并发缺陷】data race数据竞争、atomicity violation原子违背、order violation顺序违背三类均是跟共享变量的内存访问有关的缺陷。对于并发缺陷的分类目前国内许多是分死锁、数据竞争、原子违背、顺序违背。或者在并发缺陷中又细分concurrencyvulnerability:死锁和数据竞争。感觉各个作者有自己的分类方法????以下引用的中文解释来自<并发缺陷暴露、检测与规避研究综述>哈工大的苏小红老师实验室发表在2015年计算机学报上目前找到外文文献分为7类。其他四类…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

三类均是跟共享变量的内存访问有关的缺陷。
对于并发缺陷的分类目前国内许多是分死锁、数据竞争、原子违背、顺序违背。
在这里插入图片描述或者在并发缺陷中又细分 concurrency vulnerability :死锁和数据竞争。
感觉各个作者有自己的分类方法?

以下引用的中文解释来自<并发缺陷暴露、检测与规避研究综述>哈工大的苏小红老师实验室发表在2015年计算机学报上

目前找到外文文献分为7类。其他四类是我上篇说的死锁(Deadlock)、活锁(LiveLock)、饥饿(Starvation)、挂起(Suspension)

data race数据竞争

race condition竞用条件:

  1. 并发线程在同一个内存地址上操作
  2. 其中至少一个是写操作
  3. 内存没有使用同步机制

注意:满足竞用条件时,不一定产生数据竞争。
Data race occurs when at least two threads access the same memory location , with at least one of them writing data to that location and these accesses are not protected by locks
谷歌翻译: 当至少两个线程访问同一内存位置时发生数据争用,其中至少一个线程将数据写入该位置,并且这些访问不受锁的保护
中文解释: 对某一共享内存单元,存在来自不同线程的两个并发访问,且至少一个为写访问.并发意指这两个访问之间没有happens-before关系,存在“同时”发生的可能.

happens-before:
Chapter 17 of the Java Language Specification defines the happens-before relation on memory operations such as reads and writes of shared variables. The results of a write by one thread are guaranteed to be visible to a read by another thread only if the write operation happens-before the read operation. The synchronized and volatile constructs, as well as the Thread.start() and Thread.join() methods, can form happens-before relationships.

atomicity violation原子违背

Atomicity violation occurs when the execution of two code blocks(sequences of statements protected by locks) in one thread is concurrency overlapping with the execution of one or more code blocks of other threads ,in such a way that the resulting content of memory cannot be achieved by executing the involved blocks in any non-overlapping order.
谷歌翻译: 当一个线程中的两个代码块(受锁保护的语句序列)的执行与其他线程的一个或多个代码块的执行并发重叠时,就会发生原子性冲突,以这样一种方式,使得不能通过以任何非重叠的顺序执行代码块来实现所得到的存储器内容。
中文解释: 对某一为保证正确性必须原子性执行的指令序列,存在一个执行交错,其执行效果不与任何该指令序列原子性执行时的执行交错的效果相同.

单变量的四种原子性违背的例子
【并发缺陷】data race数据竞争、atomicity violation原子违背、order violation顺序违背
T1两次读值不一致;T2写的值被覆盖; T1读值不一致 ; T2读到了中间值

在这里插入图片描述
解释:正确顺序L1-L2-L3 判断缓冲区剩余是否够,不够就加,之后写入。错误顺序L1-L3-L2使得缓冲区还未扩容便填充,造成缓冲区溢出。
在这里插入图片描述
解释:指针指向proc_info后,再写入数据,S3造成空指针异常NPD

order violation顺序违背

Order violation occurs when the expected order of at least two memory accesses is not respected, i.e., the programmer’s intended order of execution is not enforced. 两个存储访问的顺序违反
谷歌翻译: 如果不遵守至少两次内存访问的预期顺序,即不执行程序员的预期执行顺序,则会发生顺序冲突。
中文解释: 顺序违背.某一指令(组)没有按照预期,总是在另一指令(组)之前或者之后执行.
消除顺序违背的措施一般是使用条件变量在指令(组)之间形成固定的执行次序.
在这里插入图片描述
解释:thread1初始化io_pending S4必须在S2之后执行
在这里插入图片描述
解释:需要先初始化在操作,造成Use before init缺陷

三者区别

data race order violation atomicity violation
至少一个线程在等待状态
至少一个线程执行状态
所有线程都在执行态
产生错误、或非预期结果
至少一个线程持有锁
不同的线程访共享内存
至少一个内存访问操作是写
内存访问没有同步机制保护
在内存访问中,至少有一个正确的执行顺序没有被保证
序列需要被原子执行
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/223086.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SQL Server 2019基础配置

    SQL Server 2019基础配置SQLServer2019基础配置1、在开始菜单中选中安装的SQLServer2019配置管理器,打开。2、点击SQLServer网络配置->MSSQLSERVER的协议->启用TCP/IP协议。示例:3、启动管理应用。示例:4、默认直接点击连接即可。示例:5、发现有如图所示的结果表示连接成功。示例:6、单击->右键->属性。示例:7…

  • Hadoop生态系统简介

    Hadoop生态系统简介Hadoop生态系统主要包括:Hive、HBase、Pig、Sqoop、Flume、ZooKeeper、Mahout、Spark、Storm、Shark、Phoenix、Tez、Ambari。Hive:用于Hadoop的一个数据仓库系统,它提供了类似于SQL的查询语言,通过使用该语言可以方便地进行数据汇总,特定查询以及分析存放在Hadoop兼容文件系统中的大数据。HBase:一种分布的、可

  • C#并发实战Parallel.ForEach使用

    C#并发实战Parallel.ForEach使用前言:最近给客户开发一个伙食费计算系统,大概需要计算2000个人的伙食。需求是按照员工的预定报餐计划对消费记录进行检查,如有未报餐有刷卡或者有报餐没刷卡的要进行一定的金额扣减等一系列规则。一开始我的想

  • debian6 安装 vmtools

    debian6 安装 vmtoolsVmware7自带的tools,在debian5和centos5上都可以正常安装,在debian6上就不ok了,下面是解决方案。1.添加源debhttp://debian.uchicago.edu/debian/squeezemaincontribdeb-srchttp://debian.uchicago.edu/debian/squeezemaincon

    2022年10月19日
  • win10 wlan wifi 显示 无Internet连接,安全 连不上网;网络连接显示小地球,无Internet连接 但能上网,反正wlan的 各种病症,猛药解决

    win10 wlan wifi 显示 无Internet连接,安全 连不上网;网络连接显示小地球,无Internet连接 但能上网,反正wlan的 各种病症,猛药解决1、暴力重启:直接按电源键强制关机再开机;2、右键小地球,疑难解答并且执行3、360网络修复4、改这里的配置5、计算机管理,服务改这里的配置都改成自动6、win+rregedit\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet这个值改成17、netshwinsockresetcatalognetshinti…

  • 使用 JSONPath 解析 JSON 完整内容详解

    使用 JSONPath 解析 JSON 完整内容详解jsonpath的介绍:JsonPath是一种简单的方法来提取给定JSON文档的部分内容。JsonPath有许多编程语言,如Javascript,Python和PHP,Java。JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容。 github上有它的应用:https://github.com/json-path/…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号