RTX 互斥量 和 訊號量

2021-09-12 12:18:56 字數 505 閱讀 4829

互斥量:如果乙個任務獲得資源以後沒有釋放,下次執行時候這個任務本身不必再等待,直接擁有這個資源的使用權,但別的任務要使用只能等待。

訊號量:假設初始化時只有1個資源可以使用,那麼乙個任務獲得資源以後沒有釋放,下次想再呼叫(就算是之前呼叫的這個任務也)必須等待。

這是訊號量和互斥量的區別之一,之二是互斥量可以防止優先順序翻轉。

例如有三個任務,task1,task2,task3,優先順序分別是1,2,3,任務task3執行時候需要使用資源,發現任務task1正在呼叫,那麼task3會被掛起,等待task1釋放資源。在排程器的作用下,task1在執行的過程中,任務task2就緒,搶占了task1的執行。優先順序翻轉就出現在這裡了。正常情況下應該是高優先順序任務搶占低優先順序任務才對,但在這裡低優先順序(task2)反而搶占了高優先順序的任務(task3)。但在使用互斥量時候,task3發現task1正在使用資源,它會把task1的優先順序提公升到task3一樣,這樣就不怕task2搶占task1的執行,這樣就沒有優先順序翻轉問題。

訊號量和互斥量

1.互斥量用於執行緒的互斥,訊號線用於執行緒的同步。這是互斥量和訊號量的根本區別,也就是互斥和同步之間的區別。互斥 是指某一資源同時只允許乙個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。同步 是指在互斥的基礎上 大多數情況 通過其它機制實現訪問者對資...

訊號量 互斥量

lonelycatcher if only as first.來自 訊號量用在多執行緒多工同步的,乙個執行緒完成了某乙個動作就通過訊號量告訴別的執行緒,別的執行緒再進行某些動作 大家都在semtake的時候,就阻塞在 而互斥鎖是用在多執行緒多工互斥的,乙個執行緒占用了某乙個資源,那麼別的執行緒就無法...

互斥量和訊號量的區別

1.互斥量用於執行緒的互斥,訊號量用於執行緒的同步。這是互斥量和訊號量的根本區別,也就是互斥和同步之間的區別。互斥 是指某一資源同時只允許乙個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。同步 是指在互斥的基礎上 大多數情況 通過其它機制實現訪問者對資...