Middle
Оё метавон сатрро ҳамчун объект барои бастани дар сохтори lock истифода бурд?
sobes.tech AI
Ҷавоб аз AI
Дарсодда lock учун сатрни объект сифатида ишлатиш тавсия этилмайди. Техник жиҳатдан бу мумкин бўлса-да, .NETда сатрлар ўзгартирилмайди (immutable) ва ичкилаштирилган (interned) бўлиши мумкин, яъни бир хил сатрларлитераллар ёдда бир хил объектга ишора қилиши мумкин.
Бу турли қисмлар дастурларининг случайно бир хил сатрни блоклаш учун ишлатишига олиб келиши мумкин, бу эса олдин кўрилмаган ҳаракатлар ва синхронлаштириш муаммоларини келтириб чиқаради.
Тўғри ёндашув — блоклаш учун алоҳида хусусий объектдан фойдаланиш:
private readonly object _lockObj = new object();
lock(_lockObj)
{
// танқидий бўлим
}
Шу тариқа, сиз блокировка фақат сизинг кодиингиз томонидан назорат қилинаётганига ва бошқа қисмлар билан курашмаслигига кафолат берасиз.