L
LOSTISLAND
Guest
Hi all, Tôi nghĩ rằng sự khác biệt duy nhất giữa một Mutex và một semaphore là count (Semaphore Capability) và đảo ngược ưu tiên (Mutex Capability). Hôm nay, tôi đã gặp phải một cái gì đó kỳ lạ mà có lẽ có liên quan đến khả năng đảo ngược ưu tiên hay cái gì khác. Nhận và phát hành Mutex hoặc Cột giữa các tác vụ khác nhau là rõ ràng nhưng khi tôi sử dụng chúng chỉ trong một công việc, hành vi của họ là khác nhau. Sử dụng semaphore nhiệm vụ đã bị khoá nhưng sử dụng Mutex nhiệm vụ không bị khóa. Hãy tưởng tượng chỉ có một nhiệm vụ được gọi là APP_TestTask
Có một cái gì đó tự nhiên hoặc một lỗi? Cảm ơn tiên tiến
Code:
__task trống 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 trống 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 ();}}