2

我已将此处的非阻塞队列伪代码移植到 C#。下面的代码是论文的近逐字副本。

您将采用什么方法来测试实施?

注意:我在 VS2010 中运行,所以我还没有 CHESS 支持。

编辑:

我已经删除了有问题的代码,所以一些毫无戒心的开发人员不会使用它——它需要进行相当多的更改才能让它没有错误……我仍然不能 100% 确信它没有错误。通过蛮力测试,我无法让它比基于锁的解决方案执行得更好。

此外,由于我的目标是 3.5,所以我认为我是 SOL 与 4.0 并发队列。3.5 RX 框架包括一个 ConcurrentQueue,所以这确实只是一个有趣的小编程练习,仅此而已。

4

2 回答 2

2

如果您使用的是 VS 2010 和 .NET 4,则可以使用ConcurrentQueue<T>.

于 2010-04-19T19:03:30.183 回答
2

当我尝试创建非阻塞队列时,我以这种方式测试了队列。我创建了 10 个线程并同时调用了 Enqueue 1000 次。最后我检查了队列的大小,它是!= 10 000。或者有时它会抛出异常。然后我尝试了并发双端队列。结果相同。这显然意味着队列不是线程安全的。

于 2010-04-19T19:04:08.750 回答