Düşündüğünüzden daha basit.
Microsoft'a göre : lock
Anahtar kelime, bir iş parçacığının kritik bölümdeyken bir iş parçacığının kritik bir kod bölümüne girmemesini sağlar. Başka bir iş parçacığı kilitli bir kod girmeye çalışırsa, nesne serbest bırakılıncaya kadar bekler, engeller.
lock
Anahtar kelime aramaları Enter
bloğun başlangıcında ve Exit
blok sonunda. lock
anahtar kelime aslında Monitor
arka uçtaki sınıfı işler .
Örneğin:
private static readonly Object obj = new Object();
lock (obj)
{
// critical section
}
Yukarıdaki kodda, önce iplik kritik bir bölüme girer ve sonra kilitlenir obj
. Başka bir evre girmeye çalıştığında obj
, ilk evre tarafından zaten kilitlenmiş olan kilitlenmeyi de dener . İkinci iş parçacığının ilk iş parçacığının serbest bırakılmasını beklemesi gerekir obj
. İlk iş parçacığı ayrıldığında, başka bir iş parçacığı kilitlenir obj
ve kritik bölüme girer.