L
LOSTISLAND
Guest
Γεια χαρά σε όλους, σκέφτηκα ότι οι μόνες διαφορές μεταξύ ένα mutex και σηματοφορέα είναι ο αριθμός (Δυνατότητα Semaphore) και αντιστροφή προτεραιότητας (Mutex Capability). Σήμερα, έχω συναντήσει κάτι παράξενο που ίσως σχετίζεται με την ικανότητα αντιστροφής προτεραιότητας ή κάτι άλλο. Να πάρει και την αποδέσμευση Mutex σηματοφορείς ή μεταξύ διαφορετικών καθηκόντων είναι σαφής, αλλά όταν τα χρησιμοποιούν σε ένα μόνο έργο, η συμπεριφορά τους είναι διαφορετική. Χρησιμοποιώντας σηματοφόρος το έργο είναι κλειδωμένη, αλλά χρησιμοποιώντας Mutex η εργασία δεν είναι κλειδωμένο. Φανταστείτε ότι υπάρχει ένα μόνο έργο που ονομάζεται APP_TestTask
Είναι κάτι φυσικό ή σφάλμα; Χάρη στην προηγμένη
Code:
__task APP_TestTask άκυρη (void) {για (? ;) {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 APP_TestTask άκυρη (void) {για (? ;) {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 ()?}}