L
LOSTISLAND
Guest
Oi tudo, eu pensei que as únicas diferenças entre um mutex e um semáforo são a contagem (Capability Semaphore) e inversão de prioridade (Capability Mutex). Hoje, eu encontrei algo estranho, que talvez está relacionada com a capacidade de inversão de prioridade ou outra coisa. Obtendo e liberando Mutex ou semáforos entre diferentes tarefas é clara, mas quando eu usá-los em apenas uma tarefa, o seu comportamento é diferente. Usando semáforo a tarefa está bloqueada, mas usando Mutex a tarefa não está bloqueado. Imagine que há apenas uma tarefa chamada APP_TestTask
[Código] _Task vazio 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 ();}} [/code] É algo natural ou um bug? Graças, em avançado
Code:
__task vazio 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 ();}}