#02【面试问题整理】嵌入式软件工程师

这篇博客是嵌入式软件工程师面试的知识点整理,详细阐述了并发、同步、异步、互斥、阻塞和非阻塞的概念。线程同步关注顺序执行,互斥则确保同一时间只有一个线程访问资源。同步不一定导致阻塞,但阻塞总是伴随着同步,如在等待资源释放时。
摘要由CSDN通过智能技术生成

前言

        本系列博客主要记录有关嵌入式方面的面试重点知识,本系列已经更新的篇目有如下:

        ​ 1.1进程线程的基本概念

        【本篇】1.2 并发,同步,异步,互斥,阻塞,非阻塞的理解

        内容如有错误请在私信或者评论区及时指正,谢谢~

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


 1.2.1 什么是线程同步和互斥

        线程同步:每个线程之间按预定的先后次序进行运行,协同、协助、互相配合。可以理解成“你说完,我再做”。有了线程同步,每个线程才不是自己做自己的事情,而是协同完成某件大事。

        线程互斥:当有若干个线程访问同一块资源时,规定同一时间只有一个线程可以得到访问权,其它线程需要等占用资源者释放该资源才可以申请访问。线程互斥可以看成是一种特殊的线程同步。

         总而言之,线程同步的关键在一顺序,线程之间要依靠某种顺序依次执行,例如吃饭与做饭这两个线程,必须得先做饭才能吃饭。对于线程互斥,是对一个有限的资源进行访问,而当一个线程访问之后,资源就被拿走了,其他线程无法访问,只能等到别的线程用完了,归还才能接着用。

1.2.2 线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗? 

        同步是个过程,阻塞是线程的一种状态。多个线程操作共享变量时可能会出现竞争。这时需要同步来防止两个以上的线程同时进入临界区,在这个过程中,后进入临界区的线程将阻塞,等待先进入的线程走出临界区。 

        线程同步不一定发生阻塞!!!线程同步的时候,需要协调推进速度,互相等待和互相唤醒会发生阻塞。而阻塞了一定是同步,后访问的等待获取资源,线程进入阻塞状态,借以实现多线程同步的过程。

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

        并发:在操作系统中,同个处理机上有多个程序同时运行即并发。并发可分为同步和互斥。  

        同步:同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。

        异步:异步和同步是相对的,异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。

        互斥:同一个资源同一时间只有一个访问者可以进行访问,其他访问者需要等前一个访问者访问结束才可以开始访问该资源。但互斥无法限制访问者对资源的访问顺序,即访问是无序的

        阻塞和非阻塞是当进程在访问数据时,根据IO操作的就绪状态不同而采取的不同处理方式,比如主程序调用一个函数要读取一个文件的内容,阻塞方式下主程序会等到函数读取完再继续往下执行,非阻塞方式下,读取函数会立刻返回一个状态值给主程序,主程序不等待文件读取完就继续往下执行。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值