私はシングルトンでスレッドの安全性についてthis articleを読んでいましたが、私はlock
メソッドを理解していないと思っていました。第二版では私はこの間違ったロックをしていますか?
、著者はこのあり:なぜあなたはpadlock
オブジェクトを使用するのではなく、ロックでしょう
public sealed class Singleton
{
private static Singleton instance = null;
Singleton()
{
}
public static Singleton Instance
{
get
{
lock (instance)
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
}
:私はもっとこのような何かをやっただろうに対し
public sealed class Singleton
{
private static Singleton instance = null;
private static readonly object padlock = new object();
Singleton()
{
}
public static Singleton Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}
}
をロックしたい実際のオブジェクト?
存在しないオブジェクトをロックすることはできません。 –
ああ、意味があります。ありがとう!今、もし私が 'instance'が何らかの理由でnullでないことがわかったら、私のメソッドはうまくいくのでしょうか? –
ああ...ここに著者: – oleksii