L
LOSTISLAND
Guest
Hei, tenkte jeg den eneste forskjellen mellom en Mutex og en semafor er greven (Semaphore Capability) og prioritet inversjon (Mutex Capability). I dag har jeg støtt på noe merkelig som kanskje er relatert til prioritet inversjon evne eller noe annet. Komme og slippe Mutex eller semaforer mellom ulike oppgaver er klart, men når jeg bruker dem i bare én oppgave, er deres oppførsel annerledes. Bruke semafor oppgaven er låst, men bruker Mutex oppgaven er ikke låst. Forestille deg det er bare en oppgave kalt APP_TestTask
Er det noe naturlig eller en bug? Takk på forhånd
Code:
__task void APP_TestTask (void) {for (; ;) {os_dly_wait (20), os_sem_wait (Sem_Test, 0xffff); os_sem_send (Sem_Test); os_sem_wait (Sem_Test, 0xffff); os_sem_wait ( Sem_Test, 0xffff), Test_Function ();}}
Code:
_task void APP_TestTask (void) {for (; ;) {os_dly_wait (20), os_mut_wait (Mut_Test, 0xffff); os_mut_release (Mut_Test); os_mut_wait ( Mut_Test, 0xffff); os_mut_wait (Mut_Test, 0xffff); Test_Function ();}}