簡單的用法

lock 的常見用法是一個關鍵部分。

在以下示例中,應該從不同的執行緒呼叫 ReserveRoom。與 lock 同步是防止競爭條件的最簡單方法。方法體被 lock 包圍,確保兩個或多個執行緒不能同時執行它。

public class Hotel
{
    private readonly object _roomLock = new object();

    public void ReserveRoom(int roomNumber)
    {
        // lock keyword ensures that only one thread executes critical section at once
        // in this case, reserves a hotel room of given number
        // preventing double bookings
        lock (_roomLock)
        {
            // reserve room logic goes here
        }
    }
}

如果一個執行緒到達 lock-ed 塊而另一個執行緒在其中執行,前者將等待另一個執行緒退出該塊。

最佳做法是定義要鎖定的私有物件,或私有靜態物件變數以保護所有例項共有的資料。