RT-Thread学习笔记七——线程间通讯(互斥量)

本文介绍RT-Thread实时操作系统中互斥量的基本概念、优先级继承机制及使用方法,并通过实例演示如何防止线程间资源冲突。

1.优先级翻转问题

当rt-thread实时操作系统运行时,如果单纯使用信号量来管理公共资源,则会出现优先级翻转问题,导致高优先级线程被低优先级线程运行而阻塞,使得系统的实时性无法得到保证。下面为优先级翻转的具体解释

优先级翻转:

现有三个不同优先级的线程·,优先级分别为高,中,低,使用信号量机制访问同一公共资源(临界区)。

1.优先级为低的线程先占用信号量,访问公共资源,此时高优先级线程使用信号量访问临界区,由于低优先级线程已经占用信号量还未释放,则高优先级线程进入阻塞状态,等待信号量释放。

2.此时中优先级线程就绪,由于RT-Thread使用线程优先级抢占机制,则中优先级线程获得cpu使用权,低优先级线程挂起等待。

 3.当中优先级线程运行完毕,让出cpu使用权,低优先级线程得以继续运行。当c优先级线程运行完毕,释放信号量,则高优先级线程获取信号量访问临界区,开始运行。

 由此可见,此时高优先级线程没有立即获取cpu使用权,而是一直等待其他低优先级线程完成任务后释放信号量,才可运行,严重影响了系统的实时性。

2.优先级继承机制

为解决使用信号量优先级翻转问题,互斥量采用了优先级继承机制,下面为优先级继承机制的解释。

        当有线程通过互斥量访问某一公共资源(临界区)时,此时若有多个线程访问此临界区,则进入线程等待队列,此时将占用临界区的线程优先级暂时调整为线程等待队列中优先级最高的线程相同优先级,则当外界即使有其他线程需要使用cpu时,也不会影响线程等待队列中的线程访问临界区,避免其他中等优先级线程抢占cpu,当此线程使用完毕释放互斥量时,优先级回到原先优先级。

3.互斥量基本概念

互斥量是一种特殊的信号量,只有两种状态,开锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赴遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值