lock
-
programlamada kullanılan bir keyword'dür. verildiği scope'u kilitleyerek thread'leri senkronize eden bir mekanizmadır.
c# için,
internal sealed class singletonlocked
{
private static object _lock = new object();
private static singletonlocked _instance;
public static singletonlocked instance
{
get
{
lock (_lock)
{
if (_instance == null)
{
console.writeline("singletonlocked => nesne oluşturuldu.");
_instance = new singletonlocked();
}
else
{
console.writeline("singletonlocked => nesne kullanıldı.");
}
return _instance;
}
}
}
public void donothing()
{
}
private singletonlocked()
{
}
}
test için;
parallel.for(0, 10, i =>
{
singletonlocked.instance.donothing();
});
çıktı;
singletonlocked => nesne oluşturuldu.
singletonlocked => nesne kullanıldı.
singletonlocked => nesne kullanıldı.
singletonlocked => nesne kullanıldı.
singletonlocked => nesne kullanıldı.
singletonlocked => nesne kullanıldı.
singletonlocked => nesne kullanıldı.
singletonlocked => nesne kullanıldı.
singletonlocked => nesne kullanıldı.
singletonlocked => nesne kullanıldı.
burada lock kullanılmasaydı, üretilen nesne sayısı birden fazla olabilirdi, bu da singleton mantığına terstir.
ekşi sözlük kullanıcılarıyla mesajlaşmak ve yazdıkları entry'leri
takip etmek için giriş yapmalısın.
hesabın var mı? giriş yap