竞态条件和临界区

1. 临界区和竞态条件:

临界区:访问和操作共享数据的代码段;

竞态条件:当有多个线程同时进入临界区时,执行结果取决于线程的执行顺序;

如下述代码,当多个线程同时调用func函数,对共享数据sum进行操作,实际上我们得到的结果则依赖于执行的相对时间;

线程1在a.取出sum值,然后b.对sum+1,然后c.写入sum值,假设线程2在线程1a步骤之后同样取出sum值,并分别进行+1计算,写回sum值,可见,线程1和线程2计算的结果都是1,此时sum值为1;假设线程2在线程1写回数据之后,取出sum值,进行+1,写回操作,此时sum值为2;可见,线程的执行相对时间不同,导致了共享资源出现了不同结果;

int sum = 0;...void func ()
{sum++;
}...

 

2. 保护临界区:

为了保护临界区,我们可使用互斥量、读写锁等同步措施,保证同一时间只有一个线程能够进入到临界区,或者同一时间只有一个写线程进入到临界区,从而避免产生竞态条件;

int sum = 0;...void func ()
{
  lock();sum++;unlock();
}...

 

转载于:https://www.cnblogs.com/wanpengcoder/p/5338186.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB程序实现经纬度转换成平面坐标

近期搜了下经纬度坐标转换成直角坐标的程序和原理啥的,哎,真难啊,其实道理都懂吧,下面直接贴代码, 主要是加了个for循环而言,优化输出效果。 %%%MATLAB程序实现经纬度转换成平面尔坐标: M_PI3…

ANSYS2020R2与Solidworks2019进行关联,但2019安装完后打开出现无法获得下列许可SOLIDWORKS Standard.使用许可文件不支持此版本(-21,126,0)

本身想将ANSYS2020R2与Solidworks进行关联,本身电脑上安装了2016版本,但是使用ANSYS2020R2软件,无法关联上。又没找到相应方法去解决,估计是版本问题无法关联上吧,所以就重新下个高点的版本试试。在网上下载相关软件&a…

jquerymobile使用技巧

1)ajax开关(默认jquery以ajax方式加载页面) $.mobile.ajaxEnabled false; 2)不编译指定标签 $.mobile.page.prototype.options.keepNative"input"; 3)开启dom缓存 $.mobile.page.prototype.options.domCach…

git 使用writer_GitHub - Vpredictor/WriterFly: [QT/C++] 写作天下,为作家创造世界而生,执云作笔,诉尽平生意。...

写作天下简介为作家们创造世界而诞生,执云作笔,诉尽平生意。集简约UI与人性化AI于一体的码字工具,无论是小说、作文、日记、报告,都能轻松驾驭。QQ交流群:705849222特点已有功能:自由的目录:自动…

《Linux内核》课本读书笔记 第三章

转载于:https://www.cnblogs.com/bushifudongjing/p/5339017.html

android 动态切换aar_Android应用开发之动态更改AndroidManifest.xml中节点属性操作教程...

本文将带你了解Android应用开发之动态更改AndroidManifest.xml中节点属性操作教程,希望本文对大家学Android有所帮助。在Android使用Gradle进行编译打包时,有时候需要动态更改AndroidManifest.xml中application、activity等节点属性,大多数情…

ANSYS Workbench对称建模

ANSYS Workbench对称建模 (使用版本为ANSYS 2020R2) 一、循环对称建模 1、建立三维模型。拖出一个静力学分析模块,材料保持系统默认,在Design Modeler中建立圆盘的1/4模型。外圆半径20m,内圆半径10m,厚度5m…

毕业论文排版之Word 中公式居中,编号靠右该怎么设置(针对左右不对称页边距)

首先感谢博主这篇,大家基本可以参照这个: http://t.csdn.cn/s0FY7; http://t.csdn.cn/FjmbH; 但是由于博主的是规规整整的页面边距,一篇为上下左右均为2cm,另一篇上下2.54cm左右3.18cm。ps:如果你为以上的页…

python opencv报错_OpenCV in Python 入门问题,python报错 -问答-阿里云开发者社区-阿里云...

OpenCV是Intel开源计算机视觉库。它由一系列 C 函数和少量 C 类构成,实现了图像处理和计算机视觉方面的很多通用算法。在这篇文章(译自 http://glowingpython.blogspot.com/2011/10/beginning-with-opencv-in-python.html) 中将介绍如何使用 Python 版的 OpenCV。 下…

workbench出现“Unable to start the geometry editor”

今天上午打开workbench遇到这个“Unable to start the geometry editor”问题,但是重启软件还是没用,所以网上找了下。 方法1、来源百度——大向日葵爱太阳: 我刚出现这样的问题,解答办法是将你安装主程序下的破解文件的路径改一…

ant4 多个form 验证_爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别...

点击上方“早起Python”,关注并“星标”每日接收Python干货!本文含 3321 字,9代码片段建议阅读 8 分钟前言 在我们写爬虫的过程中,目标网站常见的干扰手段就是设置验证码等,本就将基于Selenium实战讲解如何处理弹窗和验…

如何写计算机会议的rebuttal

其实最好的教材就是实例,恰好NIPS会议会把往年所有论文的Rebuttal都贴出来。。。,见这里:http://papers.nips.cc/ 同时,圈内同行也总结了不少经验,下面转帖其他人的经验 如下转自:http://qiyuhua.github.io…

一建机电实务教材电子版_20年一建其实并不难,官方出版:复习题集(精修),速做速提90分...

20年一建其实并不难,官方出版:复习题集(精修),速做速提90分一建法规管理经济建筑市政机电水利等根据《一-级建造师执业资格考试大纲》(2018 年版) 和《2020年版全国一级建造师执业资格考试用书》,组织全国著…

C#在dataGridView中遍历,寻找相同的数据并定位

1、 C#在dataGridView中遍历&#xff0c;寻找相同的数据并定位 [c-sharp] view plain copy int row dataGridView1.Rows.Count;//得到总行数 int celldataGridView1.Rows[1].Cells.Count;//得到总列数 for (int i 0; i < row; i)//得到总行数并在之内循环 { for (int j 0…

pcb板子开窗_PCB 层定义

PCB 层定义在EDA软件的专门术语中&#xff0c;有很多不是有相同定义的。以下就字面上可能的意义来解释。 Mechnical: 一般多指板型机械加工尺寸标注层 。Keepoutlayer: 定义不能走线、打穿孔(via)或摆零件的区域。这几个限制可以独立分开定义。 Topoverlay: 无法从字面得知其意…

上的img表示什么_方向盘上的SET、RES和CNL,表示什么意思?别弄错了

很多人买车都希望能买到一款称心如意的车型&#xff0c;包括价格、配置、性能以及质量都符合自己的需求。当然&#xff0c;不管是什么东西都不可能做到完美&#xff0c;就拿汽车来说&#xff0c;即便是几百万上千万的豪车也是有缺点的&#xff0c;更何况普通的十几万的家用车。…

Mysql编辑工具中使用(Navicat查询结果显示行号)

Mysql编辑工具中使用(Navicat查询结果显示行号) select rownum:rownum1 as rownum,a.roleId from base_userroles a,(select rownum:0) t where a.roleIdadmin; 转载于:https://www.cnblogs.com/xrhou12326/p/5345522.html

python的web可视化_Python的Web可视化框架Dash(8)---核心组件

本节介绍Dash应用的常用核心组件&#xff0c;导入本节用到的所有包import pandas as pdimport plotly.graph_objs as goimport dashimport dash_core_components as dcc # 交互式组件import dash_html_components as html # 代码转htmlfrom dash.dependencies import Input, Ou…

【Android 应用开发】Activity 状态保存 OnSaveInstanceState參数解析

作者 : 韩曙亮转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38297083一. 相关方法简单介绍1. 状态保存方法演示样例package com.example.octopus_saveinstance;import android.app.Activity; import android.os.Bundle;public class MainActivity exten…

python 机器视觉测量_用Opencv python实现精密测量

实际上&#xff0c;我正在使用OpenCV和Python开发一个机器视觉项目。目标&#xff1a;项目的目标是以高精度测量组件的尺寸。主要硬件&#xff1a;巴斯勒5MP照相机(aca-2500-14gm)一个红色背光灯(100毫米x 100毫米)(我的组件大小约为60毫米)实验因为我正在考虑非常严格的公差限…