"); //-->
第五天
我今天学习的是RT-Thread的线程同步。
线程同步的基本概念是:1、同步是指按预定的先后次序进行运行;2、在访问临界区的时候只允许一个 (或一类) 线程运行。
信号量是一种轻型的用于解决线程间同步问题的内核对象,线程可以获取或释放它,从而达到同步或互斥的目的。假如信号量值为 5,则表示共有 5 个信号量实例可以被使用,当信号量实例数目为零时,再申请该信号量的线程就会被挂起在该信号量的等待队列上,等待可用的信号量实例。信号量是一种非常灵活的同步方式,可以运用在多种场合中。形成锁、同步、资源计数等关系,也能方便的用于线程与线程、中断与线程间的同步中。但使用信号量会导致的另一个潜在问题是线程优先级翻转问题,在信号量中,因为已经不存在实例,线程递归持有会发生主动挂起,最终形成死锁。
互斥量是特殊的二值信号量,互斥量不同于二值信号量的地方在于:互斥量具有独占性、递归性、优先级继承机制。互斥量只有两种状态:开锁和闭锁。互斥量支持防优先级翻转,递归访问,互斥所有权,实现对临界资源的独占式处理。
事件集也是线程间同步的机制之一,一个事件集可以包含多个事件,利用事件集可以完成一对多,多对多的线程间同步,可以实现满足多个条件时候才实现同步。这种多个事件的集合可以用一个 32 位无符号整型变量来表示,变量的每一位代表一个事件,线程通过逻辑与或逻辑或将一个或多个事件关联起来,形成事件组合。事件的逻辑或也称为是独立型同步,指的是线程与任何事件之一发生同步;事件逻辑与也称为是关联型同步,指的是线程与若干事件都发生同步。事件集有以下特点:1、事件只与线程相关,事件间相互独立:每个线程可拥有 32 个事件标志,采用一个 32 bit 无符号整型数进行记录,每一个 bit 代表一个事件;2、事件仅用于同步,不提供数据传输功能;3、事件无排队性,即多次向线程发送同一事件 (如果线程还未来得及读走),其效果等同于只发送一次。事件集可使用于多种场合,它能够在一定程度上替代信号量,用于线程间同步。一个线程或中断服务例程发送一个事件给事件集对象,而后等待的线程被唤醒并对相应的事件进行处理与信号量不同的是,事件的发送操作在事件未清除前,是不可累计的,而信号量的释放动作是累计的。
当事件只用到一个事件时,也就是值只用到一位时,事件和信号量的效果相同。事件可以看成信号量的进化,是信号量的全集。信号量可以看成是事件的子集。在某一条件下,事件和信号量效果相同,可以认为是等价的。当只需一对一同步的时候,用信号量就够了。当一对多,或多对多时用事件。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构
CES获奖:HUMANICS SEGYM RT智能互联机器人训练平台
泰克将其多项分析技术特长融入RT-Eye软件
英飞凌亮相2024 RT-Thread开发者大会,加速AI进化,共探智能硬件创新之路
rt9245应用电路
RT-H001:可穿戴心率监测模块方案
RT 版图寄生的效应
纳芯微与RT-Thread睿赛德达成战略合作,共筑自主可控实时控制MCU/DSP体系
RW61X:安全i.MX RT MCU中的Wi-Fi 6三频器件
RISC-V汽车平台通过RT-Europa实现实时控制
Quadlator II--RT-Linux内核驱动基础
几个RT-Linux 源码
RT-Linux源码
NXP之i.MX RT系列单片机上电操作
AD7711为具有RTD电流源的LC²MOS信号调节ADC电路
恩智浦携手RT-Thread,全力赋能智能工业与物联网新时代!
将RT-Thread移植到MCUXPressoIDE上(基于FRDM-MCX C444)
555+RT测量电路
基于RT-Linux的嵌入式PLC设计及实现
基于RT-Thread和STM32的数码相框设计方案
多相位PWM控制器的CPU供电电源电路图
请教arm9 embeddedIce-rt的一个技术细节问题
NSSine™系列实时控制MCU/DSP助力数字电源与电机开发
有关软件编程的论文30篇
基于RT-Linux的嵌入式PLC设计及实现