RTOS (RTX OS) Mutex_Semaphore Problema

L

LOSTISLAND

Guest
Hi lahat, naisip ko na ang tanging pagkakaiba sa pagitan ng ng Mutex at isang semaporo ang bilang (semaporo Capability) at priority pagbabaligtad (Mutex Capability). Ngayon, ko na nagkaroon ng isang bagay na kakaiba na marahil ay may kaugnayan sa kakayahan ng pagbabaligtad ng priority o iba pa. Pagkuha at ilalabas ang Mutex o Semaphores sa pagitan ng iba't ibang mga gawain ay malinaw ngunit kapag ginagamit ko ang mga ito sa isang gawain lamang, ang kanilang pag-uugali ay naiiba. Paggamit sa semaporo gawain ay naka-lock ngunit gamit Mutex gawain ay hindi naka-lock. Isipin may lamang ng isang gawain na tinatawag na APP_TestTask
Code:
 __task void APP_TestTask (walang bisa) {para sa (; ;) {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 (walang bisa) {para sa (; ;) {os_dly_wait (20); os_mut_wait (Mut_Test, 0xffff); ng os_mut_release (Mut_Test); os_mut_wait ( ba ito ng Mut_Test, 0xffff); os_mut_wait (Mut_Test, 0xffff); Test_Function ();}}
ng isang bagay na natural o ng isang bug? Salamat sa advanced
 
Naniniwala ako na ang problema ay namamalagi na may taglay na kahulugan ng isang semaporo at mutex. Kung ikaw ay gumagamit ng isang gawain maaari naming ipagpalagay na, bukod sa ang sistema idle gawain, na ang iyong Ang "APP_TestTask" ay ang pinakamataas na priority. Dahil mutex isinasama priority pagbabaligtad, at ikaw din lamang magkaroon ng isang gawain, Ang mutex ay palaging mahulog sa ng "APP_TestTask". Semaporo A, gayunpaman, ay nagdudulot ng mga problema dahil ikaw ay sinusubukan sa parehong bigyan ang layo at semaporo mula sa loob ng isang gawain; mahalagang, ay nagdudulot ng gawain sa stall. Hindi ko ginagamit semaporo kapag mayroon akong lamang ng isang gawain. Mayroon bang isang tiyak na dahilan para sa kung bakit ang iyong ginagawa ito? Regards, Willis
 

Welcome to EDABoard.com

Sponsor

Back
Top