电子说
使用相互排斥 Mutex 来解决竞争冒险。
就相当于将共享的全局变量放到一个保险柜里,当任务1获取此变量时,先申请一把钥匙打开保险柜,对共享资源进行访问。当任务2也想访问共享资源时,由于申请不到钥匙,就访问不了共享资源,只能等待,等待到任务1释放钥匙,才可以获取。示例以下:
第一步(创建一把钥匙):
SemaphoreHandle_t xHandler; 创建Handler
xHandler = xSemaphoreCreateMutex(); 创建一个MUTEX(钥匙)
第二步(获取钥匙):
xSemaphoreTake(xHanlder, timeout); 指定时间内获取信号量 返回pdPASS, 或者pdFAIL。
第三步(释放钥匙):
xSemaphoreGive(xHandler); 释放
共享的资源被锁在了一个箱子里,只有一把钥匙,有钥匙的任务才能对改资源进行访问。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !