L
LOSTISLAND
Guest
Hallo, ich dachte, der einzige Unterschied zwischen einem Mutex und Semaphore sind die count (Semaphore Capability) und Prioritätsumkehrung (Mutex Capability). Heute habe ich etwas Seltsames, die vielleicht auf die Prioritätsumkehrung Fähigkeit oder etwas anderes im Zusammenhang angetroffen wird. Anreise und Loslassen Mutex oder Semaphore zwischen verschiedenen Aufgaben ist klar, aber wenn ich sie nutzen, nur eine Aufgabe, ist ihr Verhalten anders. Mit semaphore die Aufgabe gesperrt ist aber mit Mutex die Aufgabe nicht gesperrt ist. Stell dir vor es ist nur eine Aufgabe aufgerufen APP_TestTask
Ist es etwas natürlicher oder ein Bug? Vielen Dank im fortgeschrittenen
Code:
__task nichtig 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 nichtig 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 ();}}