本文介绍: 如果需要简单的互斥访问,互斥信号量可能是最合适的选择。互斥信号量也用于实现资源的互斥访问,类似于二进制信号量。但与二进制信号量不同的是,互斥信号量允许同一个任务多次获取信号量,而不会导致死锁。在任务持有互斥信号量时,其他任务无法获取该信号量,必须等待该任务释放信号量。例如,当多个任务需要共享一个资源时,可以使用二进制信号量来保证同一时间只有一个任务访问该资源。递归互斥信号量是一种特殊的信号量类型,用于解决任务在嵌套调用中对资源的重复获取。应用场景:递归互斥信号量适用于同一任务需要多次获取互斥资源的场景。
学习目标
- 理解信号量的概念
- 掌握信号量发流程
- 掌握二进制信号量
- 熟悉计数型信号量
- 掌握互斥信号量
- 熟悉递归互斥信号量
学习内容
概念
在 FreeRTOS 中,信号量(Semaphore)是一种用于实现任务之间同步和资源共享的机制。它是一种计数型的同步原语,用于控制对共享资源的访问和保护。
在FreeRTOS中,包含4种类型的信号量:
1. 二进制信号量(Binary Semaphore):
二进制信号量是最基本的信号量类型。它的计数值要么为0(表示信号量已被获取),要么为1(表示信号量可用)。二进制信号量常用于实现互斥访问共享资源的场景,只允许一个任务访问资源。
在 FreeRTOS 中,你可以使用 xSemaphoreCreateBinary()
函数创建一个二进制信号量。任务可以通过 xSemaphoreTake()
函数获取信号量,通过 xSemaphoreGive()
函数释放信号量。
2. 计数型信号量&#
原文地址:https://blog.csdn.net/bug_love/article/details/135489596
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_53768.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。