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

转载请注明作者和出处:https://blog.csdn.net/qq_28810395
运行平台: Windows 10
LeetCode官网:Fhttps://leetcode-cn.co
在这里插入图片描述

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

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

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

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

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

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

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

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

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

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

在这里插入图片描述

  • 5
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值