Sobes.tech
Middle

C#теги lock-ерлер эмне?

sobes.tech AI

AIден жооп

C#-да lock коду блокка эксклюзивдүү кирүүнү камсыз кылуу үчүн колдонулат. Ал ушул блокту бир мезгилде бир гана агым ишке ашыра алат деп кепилдик берет, бул жалпы ресурстар менен иштөөдө жарыш шарттарын (race conditions) алдын алат.

private static readonly object _lockObject = new object(); // Синхрондоштуруу объекти

public void AccessSharedResource()
{
    lock (_lockObject) // Объектти бөгөө
    {
        // Атаандаштык бөлүм: эксклюзивдүү кирүүнү талап кылган код
        // Жалпы ресурспен иштөө (мисалы, өзгөрмөнү өзгөртүү)
    } // Блоктон чыгуу менен бөгөө автоматтык түрдө бошотулат
}

Альтернатива жана байланыштуу түшүнүктөр:

  • Monitor: Синхрондоштурууда көбүрөөк тактыкты камсыз кылат, Wait, Pulse, PulseAll методдору менен.
  • Mutex: Процесстер ортосунда жана ошол эле процесстеги агымдар ортосунда синхрондоштуруу үчүн колдонулат.
  • Semaphore/SemaphoreSlim: Бир убакта ресурска кире алчу агымдардын санын чектейт.
  • ReaderWriterLockSlim: Көптөгөн агымдар бир убакта окуй алат, бирок жазуу үчүн бир гана агым уруксат берилет.

Блоктоо механизмин тандоо конкреттүү синхрондоштуруу тапшырмасына көз каранды. lockMonitor.Enter жана Monitor.Exit колдонуунун кыскача формасы жана көбүнчө бир процесстеги жөнөкөй учурлар үчүн ылайыктуу.