总目录链接:[RK3568 Android11] 本专栏说明和总目录
目录
前言
信号量(semaphore)是用于保护临界区的一种常用方法。只有得到信号量的进程才能执行临界区代码,而没有得到信号量的进程会进入休眠等待;
一、了解信号量
1、信号量定义
信号量又称为信号灯(semaphore),本质上是一种睡眠锁。信号量是可以指定多个进程进入临界区,但如果有一个任务试图获得一个不可用(已经被占用)的信号量时,信号量会将其推进一个等待队列,然后让其睡眠,CPU处理器能重获自由,从而去执行其他代码。当持有的信号量可用时(被释放后),处于等待队列中的那个任务将被唤醒,并将获得该信号量。
信号量允许多个进程同时进入临界区,大多数情况下只允许一个进程进入临界区,把信号量的计数值设置为1,即二值信号量,这种信号量称为互斥信号量。
举个例子:停车场共有100个停车位(信号量计数值设定为100),当前车位剩余用n表示(0<n<
本文详细介绍了Linux内核中的信号量机制,包括信号量的概念、特点、用途及缺点。通过实例解释了信号量如何控制并发访问,特别强调了信号量在多进程同步中的作用,以及与互斥锁的区别。同时,文章列举了信号量的相关API函数,帮助读者理解信号量的使用方法。
订阅专栏 解锁全文
693

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



