当我有多个线程需要与一个集合同时工作时,我通常使用System.Collections.Concurrent
.
但是,与非并发集合相比,这些集合更昂贵。我想知道在某些情况下我是否可以用非并发集合安全地替换它们。
例如,假设我有一个字典,我首先用数据填充它,然后我生成了几个线程(或任务),它们只从它读取,或者只检查一个键是否存在,但从不写入或更改它。
在这种情况下,使用它是否安全Dictionary<TKey, TValue>
,还是我仍然必须使用ConcurrentDictionary<TKey, TValue>
?
在一般情况下,只要不修改集合,我是否可以假设所有标准集合都支持多个阅读器?