TThread完整版学习(RCEA考试练习)之信号量使用

火狐体育全站官网|(2024官方)-ios/安卓下载地址  » 施工现场 »  TThread完整版学习(RCEA考试练习)之信号量使用
0 Comments 下午8:06

什么是进程间同步,简单点的类比就是工厂中的生产线,如果想要执行B工序就必须等待A工序的完成,那么工序A和工序B就是同步的关系,在程序中也是一样。只不过是工序变成了线程。在RTThread的文档里有这样的描述:同步是指按预定的先后次序进行运行,线程同步是指多个线程通过特定的机制(如互斥量,事件对象,临界区)来控制线程之间的执行顺序,也可以说是在线程之间通过同步建立起执行顺序的关系,如果没有同步,那线程之间将是无序的。

①当停车场空的时候,停车场的管理员发现有很多空车位,此时会让外面的车陆续进入停车场获得停车位;

②当停车场的车位满的时候,管理员发现已经没有空车位,将禁止外面的车进入停车场,车辆在外排队等候;

③当停车场内有车离开时,管理员发现有空的车位让出,允许外面的车进入停车场;待空车位填满后,又禁止外部车辆进入。

在此例子中,管理员就相当于信号量,管理员手中空车位的个数就是信号量的值(非负数,动态变化);停车位相当于公共资源(临界区),车辆相当于线程。车辆通过获得管理员的允许取得停车位,就类似于线程通过获得信号量访问公共资源。

最后信号量的使用。其实如果不追究内核的话,操作系统只需要调用api就可以了。具体就是创建信号量(rt_sem_create)、删除信号量(rt_sem_delete)获取信号量( rt_sem_take)、释放信号量( rt_sem_release)详细使用手册可以参考这里

思路:使用一个定时器:每500毫秒释放一次信号量,在创建一个线程用来反转LED灯,当有信号量的时候就执行反转LED灯。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。举报投诉

操作系统移植(照猫画虎版)RTThread的一大特色就是有丰富免费的组件可以用,但是对于我这个初学者来说很难习惯它必须使用它的模板完成任务,而且在

#维修 #跟着UP主一起创作吧 #我和我的作品 #硬声新人计划 蓝牙耳机维修

#嵌入式开发 #电路设计 #造物大赏 我的安卓手机版简易热成像仪 做出来啦


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注