Sobes.tech
Middle

C#-də lock-ler nədir?

sobes.tech Süni İntellekt

AI-dan cavab

C# dilində lock, kod blokuna müstəsna giriş təmin etmək üçün istifadə olunur. Bu, yalnız bir axının eyni zamanda bu bloku icra etməsini təmin edir və ümumi resurslarla işləyərkən yarış şəraitlərinin (race conditions) qarşısını alır.

private static readonly object _lockObject = new object(); // Sinxronizasiya üçün obyekt

public void AccessSharedResource()
{
    lock (_lockObject) // Obyektin kilidlənməsi
    {
        // Tənqid bölməsi: müstəsna giriş tələb edən kod
        // Ümumi resursla işləmək (məsələn, dəyişəni dəyişdirmək)
    } // Kilid, blokdan çıxarkən avtomatik olaraq azad edilir
}

Alternativlər və əlaqəli anlayışlar:

  • Monitor: Sinxronizasiyaya daha incə nəzarət təmin edir, Wait, Pulse, PulseAll metodlarını daxil edir.
  • Mutex: Hem proseslərarası, həm də eyni proses daxilində axınlar arasında sinxronizasiya üçün istifadə olunur.
  • Semaphore/SemaphoreSlim: Eyni vaxtda resursa giriş edə biləcək axınların sayını məhdudlaşdırır.
  • ReaderWriterLockSlim: Bir neçə axının eyni zamanda oxumasına imkan verir, lakin yalnız birinin yazmasına.

Kilidləmə mexanizminin seçimi, konkret sinxronizasiya vəzifəsindən asılıdır. lock, Monitor.EnterMonitor.Exit istifadəsinin qısaldılmış formasıdır və çox vaxt sadə daxili proseslərdə sinxronizasiya üçün uyğundur.