L
LOSTISLAND
Guest
Hej alle, jeg troede de eneste forskelle mellem en Mutex og en Semaforens er count (Semaphore Capability) og prioriteret inversion (Mutex Capability). I dag har jeg stødt på noget mærkeligt, som måske er relateret til prioritet inversion evne eller noget andet. Kom og frigive Mutex eller semaforer mellem forskellige opgaver er klart, men når jeg bruger dem i bare én opgave, deres adfærd er anderledes. Brug Semaforens opgaven er låst, men bruger Mutex opgaven ikke er låst. Forestil dig at der er kun én opgave kaldet APP_TestTask
Er det noget naturligt eller en fejl? Takket være avanceret
Code:
__task void APP_TestTask (void) {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 void APP_TestTask (void) {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 ();}}