嵌入式基础面八股文——并发,同步,异步,互斥,阻塞,非阻塞的理解(2)
转载请注明作者和出处:https://blog.csdn.net/qq_28810395
运行平台: Windows 10
LeetCode官网:Fhttps://leetcode-cn.co
一、并发,同步,异步,互斥,阻塞,非阻塞的理解
1.并发,同步,异步,互斥,阻塞,非阻塞的概念⭐⭐⭐⭐⭐
并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥。
- 互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
- 同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
- 总结:同步是一种更为复杂的互斥,而互斥是一种特殊的同步。
同步与异步
- 同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。
- 异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。
注意
:- 线程是实现异步的一个方式。可以在主线程创建一个新的线程来做某件事,此时主线程不需等待子线程做完而可以做其他事情。
- 异步和多线程并不是一个同等关系。异步是最终目的,多线程是我们实现异步的一种手段。
阻塞与非阻塞:
阻塞与非阻塞是当进程在访问数据时,根据IO操作的就绪状态不同而采取的不同处理方式,比如主程序调用一个函数要读取一个文件的内容,阻塞方式方式下主程序会等到函数读取完再继续往下执行,而非阻塞方式,读取函数会立刻返回一个状态值给主程序,主程序不等待文件读取完就继续往下执行。一般来说可以分为同步阻塞、同步非阻塞、异步阻塞与异步非阻塞。
以发送方发出请求要接收方读取某文件内容为例:
同步阻塞:发送方发出请求后一直等待(同步),接收方开始读取文件,如果不能马上得到读取结果就一直灯,直到获取读取结果再响应发送,等待期间不可以做其他的操作(阻塞);
同步非阻塞:发送方放出请求后一直等待(同步),接收方开始去读文件,如果不能马上得到读取结果,就立即返回,接收方继续去做其他事情。此时并未响应发送发,发送发一直在等待。直到IO操作(读取文件)完成后,接收方获得读取结果响应发送方,接收方才可以进入下一次请求过程。(实际不易应用)
异步阻塞:发送方发出请求后,不等待响应,继续其他工作(异步),接收方文件如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他操作(阻塞)。(实际不应用)
异步非阻塞:发送方发出请求后,不等待响应,继续其他工作(异步),接收方读取文件如果不能马上得到结果,也不等待,而是马上返回做其他事情。当IO操作(读取文件)完成以后,将完成状态和结果通知接收方,接收方在响应发送方。(效率最高)
总结:- 同步与异步是对应的,他们是线程之间的关系,两个线程之间要么是同步的,要么是异步的。
- 阻塞与非阻塞是对同一个线程来说,在某个时刻,线程要么处于阻塞,要么处于非阻塞。
- 阻塞是使用同步机制的结果,非阻塞是使用异步机制的结果。
2.什么是线程同步与互斥⭐⭐⭐⭐
- 线程同步:每个线程之间按预定的先后次序进行运行、协同、协助、互相配合。可以理解成“你说完,我在做”。有了线程同步,每个线程才不是自己做自己的事情,而是协同完成某件大事。
- 线程互斥:当若干个线程访问同一块资源时候,规定同一时间只有一个线程可以得到访问权,其他线程需要等占用自愿者释放该资源才能申请访问。线程互斥可以看成一种特殊的线程同步 。
3.线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?⭐⭐⭐
同步是个过程,阻塞是进程的一个状态。当多个线程访问同一个资源时,规定同一时间只有一个线程可以进行访问,所以后访问的线程将阻塞,等待前访问的线程访问完成。
注意
:线程同步不一定发生阻塞!线程同步的时候,需要协调推进速度,只有当访问同一资源出现互相等待和互相唤醒会发生阻塞。
嵌入式基础面八股文——并发,同步,异步,互斥,阻塞,非阻塞的理解(2)相关推荐
- 进程线程、同步异步、阻塞非阻塞、并发并行
一.进程和线程 1️⃣[进程Process]是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程. 进程 ...
- 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行,太实用了!
作者:Martin cnblogs.com/mhq-martin/p/9035640.html 基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运 ...
- 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行
基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程 ...
- Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)
文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...
- 并发编程:并发和并行、多进程、同步异步,阻塞非阻塞、进程同步(进程锁)、线程、GIL全局解释器锁、锁-信号量-Event事件、协程
文章目录 一. 操作系统的发展史 二. 进程基础 三. 并发和并行 四. 如何开启多进程 五. 进程调度算法(了解) 六. 同步异步,阻塞非阻塞(了解) 1. 状态介绍 2.同步和异步.阻塞和非阻塞 ...
- 进程线程、同步异步、阻塞非阻塞、并发并行、多线程
一: 进程和线程 1: 进程(Process) 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程.线 ...
- python 进程池阻塞和非阻塞_python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)...
9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型池子内什么时候装线程:并发的任务属于IO ...
- 过程 线 多线程 并发 同步异步
过程 线 多线程 并发 同步异步 好多人的过程,线,多线程,并发,同步,异步概念混淆,这不是一个好大学讲学的缘故啊.在这里,我们感受到的概念,帮助学生感受审查困惑. 计划 用来描述个别功能程序中描述的 ...
- cpu 被挂起和阻塞_同步异步阻塞非阻塞并发并行讲解
通过一个很形象的例子来说明同步异步阻塞非阻塞. 场景: 小明使用 chrome 下载一个软件. 1. 同步阻塞 小明使用 没有提醒功能的chrome 下载一个软件.小明 一直坐在电脑面前什么事也不做, ...
- python阻塞和非阻塞_Python基础必备知识:同步异步阻塞非阻塞
一.状态介绍 在了解其他概念之前,我们首先要了解进程的几个状态.在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞. 就绪(Ready)状态:当进程已分配到除CPU ...
最新文章
- 基于Bootstrap Ace模板+bootstrap.addtabs.js的菜单
- 关于Linux的虚拟内存管理
- slf4j绑定器_用于ADFLogger的SLF4J绑定–缺少的部分
- 数组后存入数据、删除指定内容数据
- java关键字_Java关键字
- 2.第一本 docker 书 --- docker 镜像
- ACWING830 单调栈
- 将数组转换为IntPtr
- Windows注册表下找不到指定路径,可能是注册表重定向问题。
- 调整SumatraPDF暗黑模式
- android环信3.0v回撤,环信Android消息回撤
- amd编码器 hevc_支持 AMD VCE H.264 编码器在Bandicam录制视频 - Bandicam(班迪录屏)
- 基于Java毕业设计在线答题系统源码+系统+mysql+lw文档+部署软件
- 【接口调用】EasyCVR获取直播流接口调用过程
- Android——Hander+Service,实现后台长期周期性定时任务
- 如何对pdf进行编辑修改linux,Xournal: 随心编辑PDF
- 打破数字化盐碱地:传统型企业如何踏稳数字化转型第一步
- 解决 Could not resolve placeholder ‘xxx‘ in string value “${xxx}“
- 【图像加密】基于matlab GUI正交拉丁方+二维Arnold置乱图像加密【含Matlab源码 813期】
- 凝思linux操作系统4.2内核版本_凝思linx6.0.76操作系统安装教程