转载请注明作者和出处:https://blog.csdn.net/qq_28810395
运行平台: Windows 10
LeetCode官网:Fhttps://leetcode-cn.co

一、并发,同步,异步,互斥,阻塞,非阻塞的理解

1.并发,同步,异步,互斥,阻塞,非阻塞的概念⭐⭐⭐⭐⭐

  1. 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥。

    • 互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
    • 同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
    • 总结:同步是一种更为复杂的互斥,而互斥是一种特殊的同步。
  2. 同步与异步

    • 同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。
    • 异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。
    • 注意
      • 线程是实现异步的一个方式。可以在主线程创建一个新的线程来做某件事,此时主线程不需等待子线程做完而可以做其他事情。
      • 异步和多线程并不是一个同等关系。异步是最终目的,多线程是我们实现异步的一种手段。
  3. 阻塞与非阻塞
      阻塞与非阻塞是当进程在访问数据时,根据IO操作的就绪状态不同而采取的不同处理方式,比如主程序调用一个函数要读取一个文件的内容,阻塞方式方式下主程序会等到函数读取完再继续往下执行,而非阻塞方式,读取函数会立刻返回一个状态值给主程序,主程序不等待文件读取完就继续往下执行。一般来说可以分为同步阻塞、同步非阻塞、异步阻塞与异步非阻塞。
      以发送方发出请求要接收方读取某文件内容为例:
    同步阻塞:发送方发出请求后一直等待(同步),接收方开始读取文件,如果不能马上得到读取结果就一直灯,直到获取读取结果再响应发送,等待期间不可以做其他的操作(阻塞);
    同步非阻塞:发送方放出请求后一直等待(同步),接收方开始去读文件,如果不能马上得到读取结果,就立即返回,接收方继续去做其他事情。此时并未响应发送发,发送发一直在等待。直到IO操作(读取文件)完成后,接收方获得读取结果响应发送方,接收方才可以进入下一次请求过程。(实际不易应用)
    异步阻塞:发送方发出请求后,不等待响应,继续其他工作(异步),接收方文件如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他操作(阻塞)。(实际不应用)
    异步非阻塞:发送方发出请求后,不等待响应,继续其他工作(异步),接收方读取文件如果不能马上得到结果,也不等待,而是马上返回做其他事情。当IO操作(读取文件)完成以后,将完成状态和结果通知接收方,接收方在响应发送方。(效率最高)
    总结

    • 同步与异步是对应的,他们是线程之间的关系,两个线程之间要么是同步的,要么是异步的。
    • 阻塞与非阻塞是对同一个线程来说,在某个时刻,线程要么处于阻塞,要么处于非阻塞。
    • 阻塞是使用同步机制的结果,非阻塞是使用异步机制的结果。

2.什么是线程同步与互斥⭐⭐⭐⭐

  1. 线程同步:每个线程之间按预定的先后次序进行运行、协同、协助、互相配合。可以理解成“你说完,我在做”。有了线程同步,每个线程才不是自己做自己的事情,而是协同完成某件大事。
  2. 线程互斥:当若干个线程访问同一块资源时候,规定同一时间只有一个线程可以得到访问权,其他线程需要等占用自愿者释放该资源才能申请访问。线程互斥可以看成一种特殊的线程同步 。

3.线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?⭐⭐⭐

  同步是个过程,阻塞是进程的一个状态。当多个线程访问同一个资源时,规定同一时间只有一个线程可以进行访问,所以后访问的线程将阻塞,等待前访问的线程访问完成。
  注意:线程同步不一定发生阻塞!线程同步的时候,需要协调推进速度,只有当访问同一资源出现互相等待和互相唤醒会发生阻塞。

嵌入式基础面八股文——并发,同步,异步,互斥,阻塞,非阻塞的理解(2)相关推荐

  1. 进程线程、同步异步、阻塞非阻塞、并发并行

    一.进程和线程 1️⃣[进程Process]是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程. 进程 ...

  2. 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行,太实用了!

    作者:Martin cnblogs.com/mhq-martin/p/9035640.html 基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运 ...

  3. 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行

    基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程 ...

  4. Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)

    文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...

  5. 并发编程:并发和并行、多进程、同步异步,阻塞非阻塞、进程同步(进程锁)、线程、GIL全局解释器锁、锁-信号量-Event事件、协程

    文章目录 一. 操作系统的发展史 二. 进程基础 三. 并发和并行 四. 如何开启多进程 五. 进程调度算法(了解) 六. 同步异步,阻塞非阻塞(了解) 1. 状态介绍 2.同步和异步.阻塞和非阻塞 ...

  6. 进程线程、同步异步、阻塞非阻塞、并发并行、多线程

    一: 进程和线程 1: 进程(Process) 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程.线 ...

  7. python 进程池阻塞和非阻塞_python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)...

    9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型池子内什么时候装线程:并发的任务属于IO ...

  8. 过程 线 多线程 并发 同步异步

    过程 线 多线程 并发 同步异步 好多人的过程,线,多线程,并发,同步,异步概念混淆,这不是一个好大学讲学的缘故啊.在这里,我们感受到的概念,帮助学生感受审查困惑. 计划 用来描述个别功能程序中描述的 ...

  9. cpu 被挂起和阻塞_同步异步阻塞非阻塞并发并行讲解

    通过一个很形象的例子来说明同步异步阻塞非阻塞. 场景: 小明使用 chrome 下载一个软件. 1. 同步阻塞 小明使用 没有提醒功能的chrome 下载一个软件.小明 一直坐在电脑面前什么事也不做, ...

  10. python阻塞和非阻塞_Python基础必备知识:同步异步阻塞非阻塞

    一.状态介绍 在了解其他概念之前,我们首先要了解进程的几个状态.在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞. 就绪(Ready)状态:当进程已分配到除CPU ...

最新文章

  1. 基于Bootstrap Ace模板+bootstrap.addtabs.js的菜单
  2. 关于Linux的虚拟内存管理
  3. slf4j绑定器_用于ADFLogger的SLF4J绑定–缺少的部分
  4. 数组后存入数据、删除指定内容数据
  5. java关键字_Java关键字
  6. 2.第一本 docker 书 --- docker 镜像
  7. ACWING830 单调栈
  8. 将数组转换为IntPtr
  9. Windows注册表下找不到指定路径,可能是注册表重定向问题。
  10. 调整SumatraPDF暗黑模式
  11. android环信3.0v回撤,环信Android消息回撤
  12. amd编码器 hevc_支持 AMD VCE H.264 编码器在Bandicam录制视频 - Bandicam(班迪录屏)
  13. 基于Java毕业设计在线答题系统源码+系统+mysql+lw文档+部署软件
  14. 【接口调用】EasyCVR获取直播流接口调用过程
  15. Android——Hander+Service,实现后台长期周期性定时任务
  16. 如何对pdf进行编辑修改linux,Xournal: 随心编辑PDF
  17. 打破数字化盐碱地:传统型企业如何踏稳数字化转型第一步
  18. 解决 Could not resolve placeholder ‘xxx‘ in string value “${xxx}“
  19. 【图像加密】基于matlab GUI正交拉丁方+二维Arnold置乱图像加密【含Matlab源码 813期】
  20. 凝思linux操作系统4.2内核版本_凝思linx6.0.76操作系统安装教程

热门文章

  1. Linux下将你的程序打包成run文件
  2. 首座生态厕所亮相兰州 生物降解“三年不臭”
  3. QCon北京2015:移动开发最佳实践专题前瞻
  4. java开发_eclipse导出为war文件,热部署到tomcat运行总结[转]
  5. C#Winform中WebBrowser控件的特性和详细调用方法
  6. 1012 sed 基本命令(进行中)
  7. vmware挂载共享目录
  8. 解决跨域form表单post提交时Forbidden的问题。
  9. HAOI2008 硬币购物
  10. numpy提供的快速的元素级数组函数