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);
}
}
Über Code ist der, den ich für beide binäre Semaphore und Mutex verwenden. Der einzige Unterschied ist für binäre Semaphor Ich schreibe "xSemaphoreCreateBinary (Xsemaphore);" in Haupt und für Mutex xSemaphoreCreateMutex (Xsemaphore) in Haupt.Unterscheiden zwischen binären Semaphor und Mutex mit dem gleichen Code
Nach der definetion
„Eine Semaphore (Mutex) von der Aufgabe beschäftigt ist nur für diese Aufgabe und die Semaphore (Binary) von einer Aufgabe erstellt gegeben werden kann durch eine der Aufgaben gegeben werden“
Aber beide Codes (dh für binäre Semaphore und Mutex) geben die gleiche Ausgabe.
Danke, Das Problem war, als ich die Give-Funktion mit einem Mutex von einer anderen Aufgabe die Mutex freigegeben wurde. Später erkannte ich die Implementierungsleveldifferenz btw mutex und binary semaphore. –