📜作者:不想脱发的基兄
📺专栏:《嵌入式面试》
📣格言:不要老叹息过去,它是不再回来的;要明智地改善现在。要以不忧不惧的坚决意志投入扑朔迷离的未来。

前言
2022年秋招我面试嵌入式MCU开发方向,经过了多场的笔试与面试,在准备的过程中看了非常多的资料,我的汇总的笔记一直写在有道云笔记中,没有分享出来。现在已经到了23年春招了,特此整理后分享出来。资料看过了觉得不错就保存下来了,如果有不对的地方,欢迎批评指正,侵权联删!
1、线程之间的通信有哪些方式?
(1)volatile修饰的全局变量
Linux系统中的线程间通信方式主要以下几种:
(2)信号量(有名和无名信号量,执行PV操作)
(3)互斥锁(锁机制)
(4)读写锁(锁机制)
(5)条件变量(锁机制,互斥锁的一个加强)
2、线程的安全机制有哪些?
信号量、互斥锁、读写锁、条件变量
(1)信号量:P/V操作,只要信号量大于0就可以P(需要同步的时候)
(2)互斥锁:互斥操作,使用不当容易死锁(临界资源保护一般考虑)
(3)读写锁:使用基本和互斥锁一样,区别是上锁的时候两种方式(临界资源的读操作比较多)
(4)条件变量:对互斥锁的一个加强,,他必须跟互斥锁一起配合使用。当某个条件产生的时候才能做某件事情(不是所有情况下,线程都能通过上互斥锁访问临界资源,而是有一定要求的时候。)
3、进程之间的有哪些方式?
无名管道、有名管道(FIFO)、高级管道、信号量、信号、消息队列、共享内存、网络套接字。
(1)无名管道( pipe ): 管道是一种半双工的通信方式,数据只能单向流动,而且只能在

本文是作者在2022年秋招面试嵌入式MCU开发岗位后整理的面试知识点,涵盖了线程间通信(volatile、信号量、互斥锁、读写锁、条件变量)和线程安全的讨论,还涉及进程间通信方式(管道、信号量、信号等)以及进程的七种状态。此外,文章提及了可重入函数、线程池的概念,对比了fork和vfork函数,解释了死锁的四个必要条件,并总结了多线程编程中的错误码和资源管理。
最低0.47元/天 解锁文章
728

被折叠的 条评论
为什么被折叠?



