We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi all ,
I thought the only differences between a Mutex and a semaphore are the count(Semaphore Capability) and priority inversion(Semaphore Capability) . Today , I’ve encountered something strange which maybe is related to the priority inversion capability or something else .
Getting and releasing Mutex or Semaphores between different tasks is clear but when I use them in just one task , their behavior is different . Using semaphore the task is locked but using Mutex the task is not locked . Imagine there is just one task called APP_TestTask
__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(); } }
__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(); } }
Is it something natural or a bug ? Thanks in advanced