FreeRTOS中mutex用法
FreeRTOS中mutex用法:
FreeRTOS为了解决资源保护的问题引入了互斥量(Mutex)。
Mutex 的发音是 /mjuteks/ ,其含义为互斥(体),这个词是Mutual Exclude的缩写。
- Mutex是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section代码的访问,保证这段代码不会被并行的运行。
- mutex是一个二进制标志,可以通过它来确保执行流在代码关键区(critical section of code)互相排斥,从而对共享资源加一保护
互斥量是二进制信号量的一个变种,开启互斥量需要在头文件FreeRTOSConfig.h设置configUSE_MUTEXES 为1。互斥量和信号量的主要区别如下
互斥量操作的相关函数
SemaphoreHandle_t xSemaphoreCreateMutex( void )
xSemaphoreCreateMutex()函数用于创建互斥量
互斥量的应用伪代码
首先申明个互斥量的全局变量
SemaphoreHandle_t xMutex;
然后在main函数中创建互斥量
int main(void)
{...xMutex = xSemaphoreCreateMutex();...
}void Function_Resource(void const * argument)
{//要保护的资源函数...xSemaphoreTake( xMutex, portMAX_DELAY );{//对资源的处理...}xSemaphoreGive( xMutex ); ...
}
```出自网摘
FreeRTOS中mutex用法相关推荐
- C#中Mutex的用法
C#中Mutex是互斥锁,位于System.Threading 命名空间中. 顾名思义,它是一个互斥的对象,同一时间只有一个线程可以拥有它,该类还可用于进程间同步的同步基元. 如果当前有一个线程拥有它 ...
- 正点原子FreeRTOS(中)
更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程+刷题+面经+求职+讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进入------ ...
- java的collect用法_java8新特性:stream流中collect用法
java8新特性:stream流中collect用法 java8新特性:stream流中collect用法 1.toList List collectList = Stream.of(1, 2, 3, ...
- 【嵌入式操作系统】FreeRTOS信号量mutex和semaphore的区别
今天学习信号量mutex和semaphore的区别,找到了正点原子的博客介绍,讲的挺详细的.建议大家阅读 转载自:https://blog.csdn.net/nippon1218/article/de ...
- c++中static_cast用法与uchar/char的区别
1.c++中static_cast用法 static_cast是指显性类型强制转换,如: int a = static_cast<int>(120.34); 结果为a= 120. 和C语言 ...
- 简单介绍Python中异常处理用法
这篇文章主要给大家分享的是 Python中异常处理用法,为了保证程序的健壮性与容错性,即在遇到错误时候程序不会崩溃,我们需要对异常进行处理,下面来看看文章对此的用法,需要的朋友可以参考一下 为了保证程 ...
- 关于OpenCV中常见函数用法总结
关于OpenCV中常见函数用法总结 一 一般Mat的赋值操作 二 求Mat中的最大值以及最小值 三 randn()函数给图像添加高斯噪声 四 mean()函数的用法 五 系统计时器 六 矩阵之间的四则 ...
- java中import用法
java中import用法 单类型导入(single-type-import),例如import java.io.File; 按需类型导入(type-import-on-demand),例如 impo ...
- 一个线程中lock用法的经典实例
1 /* 2 该实例是一个线程中lock用法的经典实例,使得到的balance不会为负数 3 同时初始化十个线程,启动十个,但由于加锁,能够启动调用WithDraw方法的可能只能是其中几个 4 作者: ...
最新文章
- jQuery学习---------认识事件处理
- [CentOS7]redis设置开机启动,设置密码
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- 《漫画算法2》源码整理-6 两数之和 三数之和
- Linux上操作Docker守护态运行
- 数据中心网络性能:新应用下的新需求
- [BUUCTF-pwn]——bjdctf_2020_babyrop
- ASP.NET基础代码备忘
- 解决webstorm中vue语法没有提示
- 面试指南:新人面试做好三个“第一”
- lr11 打开controller时,会提示提示cannot initialize driver dll,exiting
- IDEA拉取GitLab代码出现Git Pull failed remote: HTTP Basic: Access denied
- 2021年软考程序员考试大纲
- ARM Mbed在线IDE编程意法半导体(ST)开发板
- INCA_ProF脚本教程
- MATLAB中(:,1)是什么含义?/MATLAB中冒号的用法
- 【打CF,学算法——四星级】CodeForces 86D Powerful array (莫队算法)
- WordCount 案例
- 1102: 火车票退票费计算(函数专题)C语言
- 项目html+sass