Middle
Lock yapısında bloklama için nesne olarak dize kullanılabilir mi?
sobes.tech yapay zeka
AI'dan gelen yanıt
C#'ta kilitleme (lock) için bir dize kullanmak önerilmez. Teknik olarak mümkün olsa da, .NET'teki dizeler değiştirilemez (immutable) ve iç içe geçebilir (interned), yani aynı dize literalleri bellekte aynı nesneye referans verebilir.
Bu, programın farklı bölümlerinin kazara aynı diziyi kilitlemek için kullanma riskini getirir, bu da öngörülemeyen davranışlara ve senkronizasyon sorunlarına yol açar.
Doğru yaklaşım, kilitleme için ayrı bir özel nesne kullanmaktır:
private readonly object _lockObj = new object();
lock(_lockObj)
{
// kritik bölüm
}
Bu şekilde, kilitlemenin yalnızca sizin kodunuz tarafından kontrol edildiğinden ve diğer program bölümleriyle çakışmadığından emin olursunuz.