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用法相关推荐

  1. C#中Mutex的用法

    C#中Mutex是互斥锁,位于System.Threading 命名空间中. 顾名思义,它是一个互斥的对象,同一时间只有一个线程可以拥有它,该类还可用于进程间同步的同步基元. 如果当前有一个线程拥有它 ...

  2. 正点原子FreeRTOS(中)

    更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程+刷题+面经+求职+讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进入------ ...

  3. java的collect用法_java8新特性:stream流中collect用法

    java8新特性:stream流中collect用法 java8新特性:stream流中collect用法 1.toList List collectList = Stream.of(1, 2, 3, ...

  4. 【嵌入式操作系统】FreeRTOS信号量mutex和semaphore的区别

    今天学习信号量mutex和semaphore的区别,找到了正点原子的博客介绍,讲的挺详细的.建议大家阅读 转载自:https://blog.csdn.net/nippon1218/article/de ...

  5. c++中static_cast用法与uchar/char的区别

    1.c++中static_cast用法 static_cast是指显性类型强制转换,如: int a = static_cast<int>(120.34); 结果为a= 120. 和C语言 ...

  6. 简单介绍Python中异常处理用法

    这篇文章主要给大家分享的是 Python中异常处理用法,为了保证程序的健壮性与容错性,即在遇到错误时候程序不会崩溃,我们需要对异常进行处理,下面来看看文章对此的用法,需要的朋友可以参考一下 为了保证程 ...

  7. 关于OpenCV中常见函数用法总结

    关于OpenCV中常见函数用法总结 一 一般Mat的赋值操作 二 求Mat中的最大值以及最小值 三 randn()函数给图像添加高斯噪声 四 mean()函数的用法 五 系统计时器 六 矩阵之间的四则 ...

  8. java中import用法

    java中import用法 单类型导入(single-type-import),例如import java.io.File; 按需类型导入(type-import-on-demand),例如 impo ...

  9. 一个线程中lock用法的经典实例

    1 /* 2 该实例是一个线程中lock用法的经典实例,使得到的balance不会为负数 3 同时初始化十个线程,启动十个,但由于加锁,能够启动调用WithDraw方法的可能只能是其中几个 4 作者: ...

最新文章

  1. jQuery学习---------认识事件处理
  2. [CentOS7]redis设置开机启动,设置密码
  3. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
  4. 《漫画算法2》源码整理-6 两数之和 三数之和
  5. Linux上操作Docker守护态运行
  6. 数据中心网络性能:新应用下的新需求
  7. [BUUCTF-pwn]——bjdctf_2020_babyrop
  8. ASP.NET基础代码备忘
  9. 解决webstorm中vue语法没有提示
  10. 面试指南:新人面试做好三个“第一”
  11. lr11 打开controller时,会提示提示cannot initialize driver dll,exiting
  12. IDEA拉取GitLab代码出现Git Pull failed remote: HTTP Basic: Access denied
  13. 2021年软考程序员考试大纲
  14. ARM Mbed在线IDE编程意法半导体(ST)开发板
  15. INCA_ProF脚本教程
  16. MATLAB中(:,1)是什么含义?/MATLAB中冒号的用法
  17. 【打CF,学算法——四星级】CodeForces 86D Powerful array (莫队算法)
  18. WordCount 案例
  19. 1102: 火车票退票费计算(函数专题)C语言
  20. 项目html+sass

热门文章

  1. C# 下载excel模板,并将数据导进模板excel
  2. beego中log日志日期问题
  3. MEMO与以太坊达成战略合作
  4. 恶意软件现在分布在OneNote文件中以逃避防御
  5. Python占位符以及字符串常用函数
  6. 中华老字号“桂发祥“,走上了“狗不理“的老路?
  7. Android刘海屏适配全方案
  8. 微信小程序wxParse用法(解析富文本)
  9. 平面设计,字体应该怎么选?
  10. 【电商】电商后台设计—商品模块