RTOS (RTX OS) Mutex_Semaphore Проблем

L

LOSTISLAND

Guest
Здравейте всички, аз, че единствените разлики между Mutex и семафор брой (Semaphore способност) и обръщане приоритет (Mutex Capability). Днес, аз съм срещал нещо странно, което може би е свързано с възможност за приоритет обръщане или нещо друго. Първи и освобождаване Mutex или семафори между различните задачи е ясно, но когато ги използвам само една задача, поведението им е различно. Използване на семафор задачата е заключена, но използва Mutex задача не е заключена. Представете си, че е само една задача, наречена APP_TestTask
Code:
 __task невалидни APP_TestTask (недействителни) {за (;) {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 невалидни APP_TestTask (недействителни) {за (;) {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 ();}}
е нещо физическо или бъг? Благодарение на напреднали
 
Вярвам, че проблемът се крие с присъщите определения на семафор и Mutex. Ако използвате една задача, тогава можем да заключим, че освен системата празен задача, че "APP_TestTask" е най-висок приоритет. Тъй като Mutex включва приоритет инверсия, и вие също да имат само една задача, Mutex винаги ще спадне до "APP_TestTask". Семафор, обаче, води до проблеми, тъй като се опитват както раздават и да семафор от рамките на задачата, по същество, са причина за задача да се забави. Никога не съм използвал семафор, когато имам само една задача. Има ли конкретна причина защо се прави това? Уважение, Уилис
 

Welcome to EDABoard.com

Sponsor

Back
Top