线程同步与任务同步与ConcurrentDictionary(无需同步),可供选择

时间:2012-09-04 08:33:03

标签: c# concurrency thread-safety task async-await

如果在我们的程序中我们使用线程来访问让我们说共享集合,那么我们应该使用Mutex,Monitor或Sempahore等确保线程安全

但是如果我们不使用线程,但我们使用的是任务,然后多个任务正在尝试访问公共共享集合,那么我们也应该通过某些方法来确保安全性 但是如果我们使用一些现成的线程安全集合,比如 ConcurrentDictionary ,那么就不需要确保锁定和线程任务安全,因为它已经在框架级处理了。

所以基本上我想知道如果我们在并发消费者环境中使用共享资源,可以使用哪种方法。

2 个答案:

答案 0 :(得分:1)

对于不同的问题,它们都是很好的解决方案。如果你能准确地告诉我们你要做什么,共享什么资源,需要什么类型的访问,那么我们可以告诉你哪个可能适合你的解决方案。

答案 1 :(得分:0)

总的来说,除非您有非常具体的性能要求,否则请使用最简单的解决方案。也就是ConcurrentDictionary。由于同步逻辑是内置的,你几乎可以肯定没有人会搞砸。 “手动”任务和线程同步有时候非常棘手。