L
LOSTISLAND
Guest
Zdravo, mislil sem le razlik med mutex in semafor je število (Semaphore zmogljivost), prednost inverzija (mutex zmogljivost). Danes sem naletela na nekaj čudnega, ki je morda povezano z zmožnostjo prednostno inverzije ali kaj drugega. Pridobivanje in sproščanje mutex ali semaforji med različnimi nalogami je jasno, ampak ko sem jih v eno samo nalogo, njihovo vedenje je drugačno. Uporaba semafor naloga je zaklenjena, vendar z uporabo mutex naloga ni zaklenjena. Predstavljajte si, da je samo ena naloga pozval APP_TestTask [KODA] __task nična 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 ();}} [/KODA] [KODA] _task nična 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 ();}} [/KODA] Je to nekaj naravnega ali napaka? Hvala naprednih