在C#中锁定空闲堆栈和队列

时间:2009-02-15 09:53:40

标签: .net multithreading data-structures synchronization lock-free

有没有人知道是否有可用于.NET的无锁容器库?

最好证明某些东西比我们在.NET中使用的同步包装器更有效。

我在.NET上发现了一些文章,但没有一篇文章指出任何速度基准测试,也没有激发他们对可靠性的信心。

谢谢

4 个答案:

答案 0 :(得分:15)

迟到了,但我从未想过要将Julian Bucknalls的文章添加到此列表中。

但他没有表现数字。在我对他的结构的测试中,与锁定相比,该列表的扩展性很好(与ReaderWriterLock相比内核使用率非常低)。

他的博客有一系列关于C#中无锁结构的文章。

LOCK-FREE DATA STRUCTURES: THE STACK

答案 1 :(得分:11)

你的意思是容器类就像它们存在于PFX框架(Parallels for .NET),ConcurrentQueue& ConcurrentStack

Pfx blog

答案 2 :(得分:1)

在不了解它的情况下,我偶然发现了一个here的图书馆。

虽然可能不是你想要的,但至少有一个关于lock free queue structure in C# here的StackOverflow的实现和讨论。通过StackOverflow代码审查流程可能会对其安全性有所信心,或者提供有关如何自行构建无锁容器的信息。

答案 3 :(得分:-4)

锁定免费数据结构在用内存模型引起的混乱修改CLR之前会有问题,请参阅CLI规范。

无锁编程非常困难,您不应该在集合(容器)级别btw上烦恼。对于那里的任何语言都是如此..