gpt4 book ai didi

c# - ConcurrentDictionary构造函数线程安全吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:29 24 4
gpt4 key购买 nike

例如,如果我有如下代码:

if (dictionary == null) {
dictionary = new ConcurrentDictionary();
}


多个线程可以读取为空并同时创建新的ConcurrentDictionaries吗?

我在说System.Collections.Concurrent提供的ConcurrentDictionary

https://msdn.microsoft.com/en-us/library/dd287191(v=vs.110).aspx

最佳答案

ConcurrentDictionary是线程安全的。但是您显示的代码与ConcurrentDictionary的内部无关。 ConcurrentDictionary之外的所有事情都由您负责。因此,您应确保初始化仅进行一次。

一种方法是使用Lazy(T)

Lazy<ConcurrentDictionary> _dictionary = new Lazy<ConcurrentDictionary>(() => new ConcurrentDictionary());


只需调用Value即可获取字典实例。懒惰只会初始化字典一次,并且还会为初始化部分照顾线程安全。

var dic = _dictionary.Value; // extract instance.

关于c# - ConcurrentDictionary构造函数线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48392368/

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