gpt4 book ai didi

c# - 双重检查 C# 中类成员的锁定

转载 作者:行者123 更新时间:2023-11-30 13:59:37 25 4
gpt4 key购买 nike

对非静态字段使用双重检查锁定是否正确?

class Foo
{
private SomeType member;
private readonly object memeberSync = new object();
public SomeType Memeber
{
get
{
if(member == null)
{
lock(memeberSync)
{
if(member == null)
{
member = new SomeType();
}
}
}
return object;
}
}
}

最佳答案

Is it correct to use double check locking with not static fields?

是的,您的代码使用 lock 进行双重检查以获得线程安全延迟加载 没有任何问题。如果您使用的是 .NET 4,建议使用 Lazy类,此方法与线程安全延迟加载 获得相同的结果,但它也使您的代码更简单、更具可读性。

class Foo
{
private readonly Lazy<SomeType> _member =
new Lazy<SomeType>(() => new SomeType());

public SomeType Member
{
get { return _member.Value; }
}
}

关于c# - 双重检查 C# 中类成员的锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13045341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com