11 Ocak 2016 Pazartesi

C++ Lock

Lock
01private static readonly object kilit = new object();
02private int sayac;
03 
04public void IslemYap()
05{
06   lock (kilit)
07   {
08      sayac++;
09      if (sayac == 10)
10         BaskaBirIslemYap();
11   }
12}
lock deyimi C# dilinin sunduğu pratik bir senkronizasyon mekanizmasıdır. IslemYap() metodunun birden çok thread tarafından işletilmekte olduğunu düşünelim. lock (kilit) aşamasına ilk gelen thread ilgili bloğun işletim hakkını kazanır. Bu blok bu thread tarafından tamamlanmadan başka bir thread aynı aşamaya geldiğinde ilk thread'in işini bitirmesini beklemek zorundadır. Bu thread'lerin sayısı ne kadar çok olursa olsun hepsi beklemek zorundadır. İlk thread bloğun işletimini bitirdiği anda bloğun işletim hakkı bekleyen thread'ler arasında ilk-gelen-ilk-hizmet-alır mantığıyla diğer bir thread'e geçer. Böylelikle bu örnekte sayac değişkeninin değerinin artması ve ardından değerinin test edilmesi işlemi bölünmeden gerçekleşmiş olur



Share: