L
LOSTISLAND
Guest
Ahoj všem, jsem si myslel, že jediné rozdíly mezi Mutex a semafor je count (Semafor Capability) a inverze priorit (Mutex Capability). Dnes, jsem se setkal něco divného, které možná souvisí s možností inverze priorit, nebo něco jiného. Získání a uvolnění mutex nebo semafory mezi různými úkoly, je jasné, ale když jsem je použít jen v jednom úkolu, jejich chování je odlišné. Použití semafor úkol zamčené, ale pomocí Mutex úkol není uzamčena. Představte si, že tam je jen jedna úloha nazývá APP_TestTask
Je to něco přirozeného, nebo chyba? Díky pokročilé
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 ();}}