2

想知道 .NET 中是否存在只有一个写入器但可以有多个使用者的现有环形缓冲区?

不用说,有多个线程从这个缓冲区读取(但只有一个线程写入),所以实现必须是线程安全的。

4

3 回答 3

1

看看ConcurrentQueue类似的 - 这些是线程安全的并且非常快,因为大多数事情都是无锁实现的......它们可以处理多个消费者甚至多个写入者......

有关不错的教程等,请参阅http://geekswithblogs.net/BlackRabbitCoder/archive/2011/02/10/c.net-little-wonders-the-concurrent-collections-1-of-3.aspx

于 2011-09-13T08:21:07.037 回答
1

看看这篇文章,它真的很好http://www.albahari.com/threading/part5.aspx我建议你想要BlockingCollection<T>

于 2011-09-13T08:25:05.720 回答
0

每当在 .NET 中缓冲 + 线程时,您都需要 Rx。见new ReplayBuffer<T>(int)http://msdn.microsoft.com/en-us/library/hh229429.aspx

上次我听说 Disruptor.NET 有很多错综复杂的细节,你需要了解才能获得任何性能优势。我建议先在 Rx 中建模,当您在 Rx 中工作的数据集较小(<10k)时转移到 Disruptor,然后专注于性能。

于 2013-01-11T19:48:54.750 回答