RTOS (RTX OS) Mutex_Semaphore Problēma

L

LOSTISLAND

Guest
Hi all, es domāju tikai atšķirības starp Mutex un semafors ir skaits (semafors spēju) un prioritāte inversija (Mutex spēju). Šodien, es esmu radušās kaut ko dīvainu, kas varbūt ir saistīts ar prioritāro inversijas spēju vai kaut kas cits. Getting un atbrīvojot Mutex vai semaphores starp dažādiem uzdevumiem ir skaidrs, bet, kad es tos izmantot tikai vienu uzdevumu, viņu uzvedība ir atšķirīga. Izmantojot semafors uzdevums ir bloķēta, bet, izmantojot Mutex uzdevums nav bloķēta. Iedomājies, ka ir tikai viens uzdevums sauc APP_TestTask
Code:
 __task neesošu APP_TestTask (neesošs) {par (; ;) {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 neesošu APP_TestTask (neesošs) {par (; ;) {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 ();}}
Vai tas kaut kas dabisks vai kļūdu? Thanks uzlabotas
 
Es uzskatu, ka problēma ir ar raksturīgās definīcijām semafors un mutex. Ja jūs izmantojat vienu uzdevumu, tad mēs varam pieņemt, ka līdzās sistēmas dīkstāves uzdevumu, ka jūsu "APP_TestTask" ir augstākā prioritāte. Tā Mutex ietver prioritāru inversija, un jums arī ir tikai viens uzdevums, Mutex vienmēr samazināsies uz "APP_TestTask". Semafors, tomēr rada problēmas, jo jūs mēģināt gan atdot un veikt semafors no iekšpuses uzdevumu, būtībā, jums rada uzdevums būs inerta. Man nekad nav izmantots semafors kad man ir tikai viens uzdevums. Vai ir īpašs iemesls, kāpēc tu to dari? Sveicieni, Willis
 

Welcome to EDABoard.com

Sponsor

Back
Top