L
LOSTISLAND
Guest
Hallo allemaal, ik dacht dat de enige verschillen tussen een Mutex en een semafoor zijn de count (Semaphore Capability) en prioritaire inversie (Mutex Capability). Vandaag heb ik iets vreemds tegengekomen die misschien gerelateerd is aan de prioriteit inversie mogelijkheid of iets anders. Het krijgen van en het vrijgeven van Mutex of Semaforen tussen verschillende taken is duidelijk, maar als ik ze te gebruiken in slechts een taak, hun gedrag is anders. Met behulp van semafoor de taak is gesloten, maar met behulp van Mutex de taak niet is vergrendeld. Stel je voor er is slechts een taak genoemd APP_TestTask
Is het iets natuurlijks of een bug? Alvast bedankt
Code:
__task leegte 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 leegte 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 ();}}