Middle
C# da lock-ler nima?
sobes.tech AI
AIdan javob
lock C# til ishlatiladi, kod blokiga eksklyuziv kirishni ta'minlash uchun. Bu faqat bitta oqim ushbu blokni bir vaqtning o'zida bajarishini ta'minlaydi, umumiy resurslar bilan ishlashda raqobat shartlarini (race conditions) oldini oladi.
private static readonly object _lockObject = new object(); // Sinxronizatsiya uchun ob'ekt
public void AccessSharedResource()
{
lock (_lockObject) // Ob'ektni bloklash
{
// Tanqidiy bo'lim: eksklyuziv kirishni talab qiladigan kod
// Umumiy resurs bilan ishlash (masalan, o'zgaruvchini o'zgartirish)
} // Blokdan chiqishda bloklash avtomatik ravishda ochiladi
}
Alternativlar va bog'liq tushunchalar:
Monitor: Sinxronizatsiya ustidan yanada nozikroq nazoratni ta'minlaydi, Wait, Pulse, PulseAll metodlarini o'z ichiga oladi.Mutex: Jarayonlar o'rtasida ham, shuningdek, bir jarayon ichidagi oqimlar o'rtasida ham sinxronizatsiya uchun ishlatiladi.Semaphore/SemaphoreSlim: Bir vaqtning o'zida resursga kirish mumkin bo'lgan oqimlar sonini cheklaydi.ReaderWriterLockSlim: Ko'p oqimlar bir vaqtning o'zida o'qishi mumkin, lekin faqat bittasi yozishi mumkin.
Blokirovka mexanizmini tanlash aniq sinxronizatsiya vazifasiga bog'liq. lock Monitor.Enter va Monitor.Exit foydalanishning qisqartmasi bo'lib, ko'pgina oddiy sinxronizatsiya holatlari uchun mos keladi.