9
害怕我已經知道答案。我有一個處理服務調用和緩存的類。爲了避免多次調用具有相同請求的服務,我當然可以在代碼塊周圍使用鎖,但是許多這些方法具有不同的組成緩存密鑰的參數。當它可能是一個完全不同的緩存鍵(或多個不同的緩存鍵)時,等待鎖代碼塊執行似乎是一種恥辱。C#鎖定或不鎖定
我知道我可能做緩存鍵字符串本身的鎖定,但這是一個不允許的字符串可能會彈出任何地方。
因此,我可以在沒有鎖的情況下執行潛在的不必要的服務調用,或者通過等待鎖來在方法內添加潛在的不必要的延遲。
這些是我唯一的選擇還是另一個?
乾杯
「爲了避免多次調用具有相同請求的服務,我當然可以使用鎖定」 - 這聽起來不太正確。鎖(System.Threading.Monitor.Enter/Exit)用於標記僅由給定鎖定的單個線程專門運行的代碼塊。它不會神奇地使重複的呼叫消失。請發佈一段代碼,答案可能基於。 – Tar
@ default.kramer你可以做到這一點,但你需要有一個這些對象的字典或類似的東西,以便你可以找到另一個字符串。你還需要小心,確定你需要鎖定什麼的邏輯並不需要花費更多的時間/精力,而只需要鎖定一切(這取決於具體的用例)。 – Servy