簡單的用法
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 塊而另一個執行緒在其中執行,前者將等待另一個執行緒退出該塊。
最佳做法是定義要鎖定的私有物件,或私有靜態物件變數以保護所有例項共有的資料。