RTOS (RTX OS) Mutex_Semaphore Problem

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
 
Menim, da je težava s samimi definicij semafor in mutex. Če uporabljate eno nalogo, potem lahko sklepamo, da je treba poleg sistema v prostem nalogo, da vaš "APP_TestTask" je najvišja prioriteta. Ker mutex vključuje prednostno inverzijo, in tudi samo eno nalogo, bo mutex vedno sodijo v "APP_TestTask". Semafor pa povzroča težave, ker ste se trudijo, da tako vdati in sprejeti semafor znotraj nalogo, v bistvu, ti povzročajo nalogo na stojnici. Še nikoli nisem uporabljal semafor, ko imam samo eno nalogo. Ali obstaja poseben razlog, zakaj to počnete? S spoštovanjem, Willis
 

Welcome to EDABoard.com

Sponsor

Back
Top