Sobes.tech
Middle

Lock qurilmasida bloklash uchun ob'ekt sifatida satrni ishlatish mumkinmi?

sobes.tech AI

AIdan javob

C# da lock uchun satrni ishlatish tavsiya etilmaydi. Texnik jihatdan bu mumkin bo'lsa-da, .NET dagi satrlar o'zgarmas (immutable) va ichki qilingan (interned) bo'lishi mumkin, ya'ni bir xil satr literalari xotirada bir xil ob'ektga murojaat qilishi mumkin.

Bu dastur bo'laklari tasodifan bir xil satrni bloklash uchun ishlatishi mumkin bo'lgan xavfni keltirib chiqaradi, bu esa oldindan ko'rilmagan xatti-harakatlar va sinxronizatsiya muammolariga olib keladi.

To'g'ri yondashuv — bloklash uchun alohida maxfiy ob'ektni ishlatish:

private readonly object _lockObj = new object();

lock(_lockObj)
{
    // kritik bo'lim
}

Shunday qilib, siz blokirovkani faqat sizning kodingiz nazorat qilayotganingizga va boshqa dastur qismlari bilan to'qnashmasligiga kafolat berasiz.