【发布时间】:2016-06-28 09:34:31
【问题描述】:
void forward(void *pvparam)
{
while(1)
{
if(xSemaphoreTake(xSemaphore,1000)==pdTRUE)
{
UART0_SendStr("Frwd took it\n");
}
else
{
UART0_SendStr("Frwd couldn't take it\n");
}
vTaskDelay(1000);
}
}
void back(void *pvparam)
{
vTaskDelay(100);
while(1)
{
if(xSemaphoreGive(xSemaphore)==pdTRUE)
{
UART0_SendStr("Back Gave it:MF\n");
}
else
{
UART0_SendStr("Back couldn't give it:MS\n");
}
vTaskDelay(1000);
}
}
上面的代码是我用于二进制信号量和互斥量的代码。 唯一的区别是二进制信号量我正在写“xSemaphoreCreateBinary(xsemaphore);”在主要和 对于互斥体 xSemaphoreCreateMutex(xsemaphore) 在 main.
根据定义
“任务占用的信号量(互斥量)只能由该任务给出,而任务创建的信号量(二进制)可以由任何任务给出”
但是两个代码(即二进制信号量和互斥量)都给出相同的输出。
【问题讨论】: