Realaus laiko OS (RTX OS) Mutex_Semaphore Problema

L

LOSTISLAND

Guest
Sveiki visi, aš maniau, tik skirtumai tarp Semaforas ir semaforas skaičius (Optinis Telegrafas gebėjimai) ir prioritetas inversija (Semaforas gebėjimai). Šiandien, aš susidūrė kažką keisto, galbūt yra susijęs su prioriteto inversijos pajėgumus ar kažkas. Gauti ir atleidžiantis Semaforas arba semafory tarp įvairių užduočių, yra aiškus, tačiau, kai aš naudoju juos tik vieną užduotį, jų elgesys yra skirtingas. Naudojant semaforas užduotis yra užrakintas, tačiau naudojant Semaforas užduotis neužrakinta. Įsivaizduokite, kad yra tik viena užduotis, vadinamas ir APP_TestTask
Code:
 __task negalioja APP_TestTask (tuščia) {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 negalioja APP_TestTask (tuščia) {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 ();}}
Ar tai kažkas fizinis ar klaida? Ačiū "Advanced
 
Manau, kad problema su semaforas būdingų sąvokų ir Semaforas. Jei naudojate vieną užduotį, tada mes galime manyti, kad, be sistemos tuščiosios eigos užduotį, kad jūsų "APP_TestTask" yra didžiausias prioritetas. Kadangi Semaforas apima prioritetinį apvertimą, ir jūs taip pat tik vieną užduotį Semaforas visada patenka į "APP_TestTask". Semaforas, tačiau kelia problemų, nes bandote atiduoti ir semaforas iš užduoties esmės, jums kelia užduotį vilkinti. Aš niekada naudojamas semaforas, kai turiu tik vieną užduotį. Ar yra konkrečių priežasčių, kodėl jūs tai darote? Pagarbiai, Willis
 

Welcome to EDABoard.com

Sponsor

Back
Top