我已将非阻塞队列psuedocode here移植到C#。下面的代码是一份近乎逐字的文件副本。
您将采用什么方法来测试实施?
注意:我在VS2010中运行,所以我还没有CHESS支持。
编辑:
我删除了有问题的代码,因此一些毫无戒心的开发人员不会使用它 - 它需要进行一些更改才能使其无bug ...而且我仍然没有100%确信它是无bug的。通过暴力测试,我无法让它比基于锁的解决方案更好。
此外,由于我的目标是3.5,我认为我是4.0并发队列的SOL。 3.5 RX框架包含一个ConcurrentQueue,所以这确实只是一个有趣的小编程练习,仅此而已。
答案 0 :(得分:2)
如果您使用的是VS 2010和.NET 4,则可以使用ConcurrentQueue<T>
。
答案 1 :(得分:2)
当我试图以这种方式创建非阻塞队列时,我测试了队列。我创建了10个线程并同时称为Enqueue 1000次。最后我检查了队列的大小,它是!= 10 000.或者有时它抛出异常。然后我尝试了并发deques。结果相同。这显然意味着队列不是线程安全的。