对于并发字典
ConcurrentDictionary<string, C> dic;
(其中 C 是某个类),有没有人知道关于如何对 C 的实例执行操作的规则和限制的参考,比如 C0,这是字典中的一个值?即,如果我们有一个线程直接在 C0 上执行操作,而另外两个线程通过字典在 C0 上执行操作,我猜我们仍然可能会遭受竞争条件?(如果 C 是原始语言,我们不会这样做)。
感谢您提出的任何建议!
最好的,克里斯
对于并发字典
ConcurrentDictionary<string, C> dic;
(其中 C 是某个类),有没有人知道关于如何对 C 的实例执行操作的规则和限制的参考,比如 C0,这是字典中的一个值?即,如果我们有一个线程直接在 C0 上执行操作,而另外两个线程通过字典在 C0 上执行操作,我猜我们仍然可能会遭受竞争条件?(如果 C 是原始语言,我们不会这样做)。
感谢您提出的任何建议!
最好的,克里斯
ConcurrentDictionary
类本身是线程安全的。
这与您放入字典中的任何内容的线程安全性无关。
您应该确保您的类是线程安全的,或者理想情况下是不可变的。
如果您确实改变了字典中的对象,您还必须注意不同的线程可能随时删除或替换它。
简而言之,线程安全仍然很难;您仍然需要确切地知道可能会发生什么变化,并确保每个线程都可以处理它。
有关编写线程安全对象的更多信息,请参阅我的博客。