使用相互排斥Mutex来解决竞争冒险

电子说

1.2w人已加入

描述

使用相互排斥 Mutex 来解决竞争冒险。

就相当于将共享的全局变量放到一个保险柜里,当任务1获取此变量时,先申请一把钥匙打开保险柜,对共享资源进行访问。当任务2也想访问共享资源时,由于申请不到钥匙,就访问不了共享资源,只能等待,等待到任务1释放钥匙,才可以获取。示例以下:

第一步(创建一把钥匙):

SemaphoreHandle_t  xHandler; 创建Handler

xHandler = xSemaphoreCreateMutex(); 创建一个MUTEX(钥匙)

第二步(获取钥匙):

xSemaphoreTake(xHanlder, timeout); 指定时间内获取信号量 返回pdPASS, 或者pdFAIL。

第三步(释放钥匙):

xSemaphoreGive(xHandler); 释放

共享的资源被锁在了一个箱子里,只有一把钥匙,有钥匙的任务才能对改资源进行访问。

信号源信号源

信号源



 

审核编辑:刘清

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分