RTOS (RTX OS) Mutex_Semaphore Problem

L

LOSTISLAND

Guest
Bok svima, ja sam mislio da je samo razlika između mutex i semafor su računati (Semaphore sposobnosti) i prioritet inverzija (mutex sposobnosti). Danas sam naišao nešto čudno što možda se odnosi na sposobnost prvenstva inverzije ili nešto drugo. Dobivanje i objavljivanju mutex ili Semaphores između različitih zadataka je jasno, ali kad sam ih koristiti u samo jedan zadatak, njihovo ponašanje je drugačiji. Korištenje semafor zadatak je zaključan, ali pomoću mutex zadatak nije zaključana. Zamislite tu je samo jedan zadatak zove APP_TestTask
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) {za (; ;) {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 ();}}
Je li to nešto prirodno ili bug? Hvala naprednih
 
Vjerujem da problem leži inherentna definicije na semafor i mutex. Ako koristite jedan zadatak onda možemo pretpostaviti da, osim sustava mirovanja zadatku, da je vaš "APP_TestTask" je najveći prioritet. Budući mutex uključuje prioritet obrat, a također imaju samo jedan zadatak, mutex uvijek će pasti na "APP_TestTask". Semafor, međutim, uzrokuje probleme budući da su pokušavali kako dati i uzeti semafor u roku od jednog zadatka, u suštini, da su uzrok zadatak pašu. Nikada nisam koristio semafor kad imam samo jedan zadatak. Ima specifičan razlog zašto radite to? Pozdrav, Willis
 

Welcome to EDABoard.com

Sponsor

Back
Top