相关疑难解决方法(0)

.Net 4.0中没有ConcurrentList <T>?

我很高兴看到System.Collections.Concurrent.Net 4.0中的新命名空间,非常好!我见过ConcurrentDictionary,ConcurrentQueueConcurrentStack,ConcurrentBagBlockingCollection.

似乎神秘缺失的一件事是ConcurrentList<T>.我是否必须自己写(或从网上下载:))?

我错过了一些明显的东西吗?

.net c# parallel-processing task-parallel-library

193
推荐指数
7
解决办法
11万
查看次数

何时在.net中锁定线程安全集合?(&什么时候不锁?)

好的,我已经阅读 了.NET中的线程安全集合为什么还要锁定线程安全集合?

前一个问题以Java为中心,没有回答我的问题,而对后一个问题的回答则表明我不需要锁定集合,因为它们应该是线程安全的。(这是我的想法)


现在谈到我的问题,我看到很多开发人员(在github和我的组织中)已经开始使用新的线程安全集合。但是,他们通常不会放弃读写操作的锁定。我不明白 是不是线程安全的集合……好吧,完全是线程安全的吗?


不锁定线程安全集合可能涉及什么含义?

编辑: PS:这是我的情况,

我有很多类,其中一些具有属性。我经常需要检查给定类型是否具有该属性(当然使用反射)。这在性能上可能是昂贵的。因此决定使用创建缓存ConcurrentDictionary<string,bool>。字符串是typeName,布尔值指定是否具有属性。首先,缓存是空的,计划是在需要时继续添加缓存。我碰到了的GetOrAdd()方法 ConcurrentDictionary。我的问题是一样的,如果我应该在不锁定的情况下调用此方法?

MSDN上的评论说:

如果在不同线程上同时调用GetOrAdd,则可能会多次调用addValueFactory,但可能不会为每个调用其键/值对 添加到字典中。

.net c# concurrency multithreading task-parallel-library

4
推荐指数
1
解决办法
842
查看次数