2016-07-28 56 views
0

我正在修復與一個庫中的併發訪問集合有關的一個錯誤。目前,庫使用互斥鎖(鎖)來控制來自多個線程的訪問。代碼中的鎖定區域包含應該執行得相當快的代碼(修改列表/字典或從中讀取),因此旋轉鎖定似乎與此場景匹配。如果衝突不經常發生,應該如何使用自旋鎖或互斥鎖

但是... 在大多數情況下,鎖定不是必須的,因爲使用這個庫的大多數應用程序都是單線程的,對我來說不要放慢速度很重要。 天真的基準測試表明自旋鎖檢查速度較慢,沒有使用資源,但我不完全信任它。

回答

0

如果您將此功能標爲線程安全那麼您應該提供對收集更新的鎖定。

如果不是,請確保記錄事實並將其留給消費者。

+0

問題是自旋鎖是否比普通鎖更不影響性能。函數應該是線程安全的,因爲有些客戶(尤其是我)在多線程環境中使用它。 – szogun1987