gpt4 book ai didi

c# - Lazy 和 LazyInit 之间的区别

转载 作者:太空狗 更新时间:2023-10-30 00:57:22 25 4
gpt4 key购买 nike

我在使用的类(class)中有以下行。

 private static readonly LazyInit<TestClass> _instance = new LazyInit<TestClass>(() => new TestClass(), LazyInitMode.EnsureSingleExecution);

有一天,我想利用 .NET 4 附带的所有新功能,安装了它,结果一团糟。

我的 LazyInit 不再工作了。所以我用 Lazy 替换了每一个事件,但是怎么样 LazyInitMode.EnsureSingleExecution?

我认为那将是 LazyThreadSafetyMode.ExecutionAndPublication

private static Lazy<LookupService> s_instance = new Lazy<LookupService>(() => new LookupService(), LazyThreadSafetyMode.ExecutionAndPublication);

这两个减速是否等价?

最佳答案

有效,是的。通过设置 LazyThreadSafetyMode.ExecutionAndPublication ,你是说你只希望一个线程能够构造 Lazy<T> ,这有效地为构建阶段“确保单一执行”。 PublicationOnly将允许多个线程运行构造函数,但只存储一个结果(第一个完成)。

关于c# - Lazy<T> 和 LazyInit<T> 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5385408/

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