SpinLock.Enter(Boolean) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
以可靠的方式取得鎖,即使方法呼叫中出現例外, lockTaken 也能可靠地檢查是否取得鎖。
public:
void Enter(bool % lockTaken);
public void Enter(ref bool lockTaken);
member this.Enter : bool -> unit
Public Sub Enter (ByRef lockTaken As Boolean)
參數
- lockTaken
- Boolean
若鎖定為真;否則,則為錯誤。
lockTaken 必須先初始化為 false 才能呼叫此方法。
例外狀況
在呼叫 Enter 之前,該 lockTaken 參數必須先初始化為 false。
執行緒擁有權追蹤已啟用,且目前執行緒已經取得此鎖。
備註
SpinLock 是非重入鎖,意即如果一個螺緒持有鎖,就不允許它再次進入鎖。 如果啟用執行緒所有權追蹤(是否啟用可透過 IsThreadOwnerTrackingEnabled查詢),當執行緒嘗試重新進入已持有的鎖時,會拋出例外。 然而,若關閉執行緒所有權追蹤,嘗試輸入已持有的鎖將導致死結。
如果你在沒先打電話Exit前就打電話Enter,內部狀態SpinLock可能會被破壞。