当前位置: 首页 > news >正文

多任务相关概念

本文所有认为是重点的都进行加粗处理,如果后续认为不重要了或认为其他内容也该是重点内容可以适当修改加粗。

常见术语

竟态

竞态定义:多任务并行执行时,如果在一个时刻同时操作同一个资源,会引起资源的错乱,这种错乱情形被称为竞态。竟态是一种错乱现象,它的发生需要同时具备以下3个条件

1、多任务情况下并行执行任务

2、在同一时刻下

3、操作同一资源

例如,两个线程同时对一个全局变量 count 进行加1操作。如果没有适当的同步机制,可能会出现以下情况:线程1读取 count 的值为10,线程2也读取 count 的值为10,然后线程1将 count 加1并写回为11,线程2也将 count 加1并写回为11,而不是预期的12,这种现象就是竟态。

临界区代码

临界区定义:操作共享资源的代码段。比如,多个线程可能对同一个全局变量进行读写操作,那么对这个全局变量进行读写的代码部分就是临界区。我感觉直接叫临界区不好理解,我以后将临界区称为临界区代码

并发控制机制

定义:为了解决竞态,需要提供一类控制机制,来避免在同一时刻使用共享资源,这类机制被称为并发控制机制。我们知道竟态需要满足3个条件才会发生,也就是说只要让其中一个条件不成立就可以避免竟态现象的发生,仔细想想就会发现为了让保证执行效率和方便数据交互条件1和条件2都不得不成立,所以也只能让条件2不成立,即让同一时刻下不会使用共享资源。

注意:并发控制机制是解决让同一时刻下不会使用共享资源的一类机制,它不是某种机制而是一类机制的统称。

并发控制机制分为以下几种机制:

1. 原子操作机制:通过硬件或软件机制确保操作的原子性,即操作在执行过程中不会被中断,要么全部执行完成,要么完全不执行。
2. 忙等待机制:忙等待机制让线程在等待某个条件满足时,不断地执行一个循环来检查条件,而不是进入阻塞状态。在循环中,线程会持续占用处理器资源,反复检查相关条件是否成立,直到条件满足才会退出循环,继续执行后续的操作。也就是说临界区代码之前判断临界区代码是否被占用执行,如果被占用执行就不断循环判断是否被占用执行,直到判断出没有被占用执行才退出循环执行临界区代码。
3. 阻塞机制:如果临界区代码被占用执行那么就睡眠即阻塞等待临界区代码不被占用执行了再执行。

4、中断屏蔽机制:在开始执行临界区代码时先屏蔽中断,在执行完临界区之后再恢复中断,适用场合:中断上下文与某任务共享资源时,或多个不同优先级的中断上下文间共享资源时

p操作与v操作

p操作和v操作是一对原语操作,必须成对出现,说白了,p操作与v操作就是为了更好的判断临界区有没有被使用。具体描述见豆包说的以下内容。

p操作内容:将信号量的值减1。若结果大于等于0,进程或线程可以继续执行,如进入临界区访问共享资源;若结果小于0,进程或线程会被阻塞,放入与该信号量相关的等待队列。

v操作内容:将信号量的值加1。若加1后信号量的值小于等于0,说明有进程或线程在等待该资源,则唤醒等待队列中的一个进程或线程,让其获得资源并继续执行。

终端


文章转载自:

http://Xak69wqf.bwttj.cn
http://Tv58qg1w.bwttj.cn
http://GlrgLTdf.bwttj.cn
http://X7URlgW1.bwttj.cn
http://MMJsJQwA.bwttj.cn
http://BWRxnZxj.bwttj.cn
http://10FIuL3G.bwttj.cn
http://WDCAt7ix.bwttj.cn
http://RLMndTP0.bwttj.cn
http://d5CMXII4.bwttj.cn
http://kF3QFthC.bwttj.cn
http://cfzYWhgJ.bwttj.cn
http://X0sVt01u.bwttj.cn
http://47rMuZZC.bwttj.cn
http://DnMdgBDm.bwttj.cn
http://sSRlX5J8.bwttj.cn
http://fpH7XFg3.bwttj.cn
http://LtDEE1VI.bwttj.cn
http://t61eNkGm.bwttj.cn
http://xhx4BR9o.bwttj.cn
http://GA4dLZAl.bwttj.cn
http://opCsQEhb.bwttj.cn
http://u0MVkFMY.bwttj.cn
http://MeeXn5kC.bwttj.cn
http://0L6TzaYj.bwttj.cn
http://s1CmdMdz.bwttj.cn
http://sntyWKcw.bwttj.cn
http://B1QXt1Lo.bwttj.cn
http://faVINnRi.bwttj.cn
http://3WEr7vB0.bwttj.cn
http://www.dtcms.com/a/376797.html

相关文章:

  • ubuntu 18.04 泰山派编译报错
  • 解决apk包体大于2G无法对齐和签名的问题
  • 运筹学——运输问题之表上作业法,西北角法,最小元素法
  • python版本管理和依赖管理的最佳实践,pyenv + uv
  • iPhon 17 推出
  • MySQL的常用命令
  • KEDA/HPA/VPA 三件套:ABP 后台作业的事件驱动伸缩
  • 金融中的异常收益率
  • 模型部署:(三)安卓端部署Yolov8-v6.0目标检测项目全流程记录
  • 阅读|史蒂芬·普拉达《C Primer Plus(第6版)》:数据和C
  • 回归预测 | MATLAB基于GRU-Attention的多输入单输出回归预测
  • UniApp 分包异步化配置及组件引用解决方案
  • Postman环境变量全局变量设置
  • C语⾔内存函数
  • go资深之路笔记(一) Context
  • 数学建模资源合集
  • STM32项目分享:基于STM32智能吸尘器系统的设计与实现
  • 计算机毕设 java 高校会议室预约管理系统 基于 SSM 框架的高校会议室管理平台 Java+MySQL 的预约全流程管控系统
  • vue-pdf 实现blob数据的预览
  • RiskBird企业信息模糊查询工具
  • 常用PDF转换工具推荐
  • ES6 类与继承:现代 JavaScript 面向对象编程
  • 使用 Docker Buildx 制作并推送双架构镜像
  • PDF Reader 编辑阅读(Mac)
  • springboot响应式编程笔记
  • 论文阅读:ACL 2024 Stealthy Attack on Large Language Model based Recommendation
  • WebView电视v1.13.0、超的电视App,适配安卓+TV双端
  • 数组的相关操作(Java)
  • Linux 防火墙 Firewalld
  • 【iOS】MVC设计模式