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
Vai tas kaut kas dabisks vai kļūdu? Thanks uzlabotas
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 ();}}