擁有共享資源的多線程應用程序需要使用互斥鎖對其訪問進行序列化。Mutex可能對系統性能有什麼副作用?
如果我想下列條件的應用程序滿足:
1 - 無互斥誤操作導致死鎖,長時間等待或其他災難性的後果。
2 - 共享資源具有處理所有互斥鎖問題的訪問器方法(因爲等待互斥量最大限度地釋放而導致延遲的嘗試)。
接受互斥鎖是解決與共享資源保護相關的許多問題的問題解決者。使用互斥體對性能有任何副作用?如果是的話應該是什麼選擇(可能是其他同步機制)?
爲了更清楚我的意思,我會考慮下面的例子:
線程讀取多個線程之間共享的全局變量的嘗試。如果我可以考慮:
a - 閱讀操作需要(X us)。
b - 互斥量使用會增加(Y us)的開銷。
Ç - 讀操作不得超過ž我們其中Z> = X,但ž< X + Y
其次,我認爲我可以假設互斥確保互斥,但在的負面影響爲代價的表現(這可能是輕微的或相當大的影響取決於上下文)。
互斥鎖在很多情況下都很有用,但是在任何情況下都應該避免(或替換)它們,因爲它們對系統性能有負面影響,儘管它們在使用時非常謹慎?
注意:這裏我指的是作爲內核服務提供的Mutexes。我不是指任何試圖模仿Mutex(內核服務)的應用程序實現。
其實,我關心的是可能由互斥造成的額外開銷。我想知道是否有一些情況下使用互斥鎖會引起應用程序/任務目的的嘮叨開銷。儘管如此,你的意見很有價值。謝謝。 – Aymen