L
LOSTISLAND
Guest
Hej alla, jag trodde de enda skillnaderna mellan en mutex och semafor är räkningen (Semaphore Capability) och prioritetsinversion (Mutex Capability). Idag har jag stött på något konstigt som kanske är relaterad till prioritetsinversion kapacitet eller något annat. Komma och släppa Mutex eller Semaforer mellan olika arbetsuppgifter är klart, men när jag använder dem i bara en uppgift, är deras beteende annorlunda. Använda semafor uppgiften är låst men med Mutex uppgiften inte är låst. Föreställ finns det bara en uppgift som heter APP_TestTask
Är det något naturligt eller en bugg? Tack på avancerad
Code:
__task void APP_TestTask (void) {för (; ;) {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) {för (; ;) {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 ();}}