1
「.NET CLR LocksAndThreads」類別中的「總競爭數量」和「隊列長度峯值」窗口性能計數器之間的區別是什麼? MSDN文檔可在此處獲得:http://msdn.microsoft.com/en-us/library/zf749bat.aspx。.NET鎖性能計數器差異
我想我的困惑是關於「嘗試獲取鎖的線程數量不成功」與「自應用程序啓動以來等待獲取託管鎖的線程總數」之間的差異。從本質上說,等待獲取鎖的區別是什麼?我解釋爲其他人在獲取它時持有它,並嘗試獲取鎖失敗?我能想到的唯一事情與鎖定獲取嘗試的方式有關,例如, Monitor.TryEnter與Monitor.Enter。
我認爲他們是測量不同的東西。爭用是事件的計數,隊列長度是線程的計數。也許爭用是無法立即獲取鎖的次數,隊列長度是無法立即獲取鎖的線程數。 – Luke 2012-02-02 19:50:46
我感到困惑的是,當一個線程無法立即獲取鎖定時,它如何不計入兩次計數 - 換句話說,每次失敗的鎖定獲取都是線程未能立即獲取鎖定的實例,沒有立即獲得鎖的實例。有問題的應用程序的「隊列長度峯值」值爲148,411,而「爭用總數」僅爲255. – user1185281 2012-02-03 13:36:07
我讀到Monitor首先作爲自旋鎖執行,然後經過一定時間後進入等待狀態。也許一個計數器是旋轉鎖定成功的次數,另一個是它失敗的次數。我不知道;文件不清楚。 – Luke 2012-02-03 14:57:58