我在访问相同BlockingCollection的C#应用程序中使用了两个线程。这工作正常,但我想检索第一个值两次,因此两个线程检索相同的值*。多线程BlockingCollection相同的值
几秒钟后,我想轮询两个线程的currentIndex并删除每个值<索引。因此,例如,线程的最低currentIndex为5,应用程序将删除队列中索引0-5处的项目。另一个解决方案是在所有线程处理该值时删除队列中的值。
我该如何做到这一点?我想我需要另一种类型的缓冲区..?
预先感谢您!
*如果.Take()被thread1调用,则该项目在集合中被删除,而thread2不能再次获得相同的项目。
更新:
我想数据存储在缓冲器中,因此,例如线程1的数据保存到HDD和线程2分析(相同)的数据(并行)。
你问的是非常不寻常的。我怀疑它说的是你的程序设计中的一个更大的问题。你能给我们多一点关于你的程序的信息 - 特别是数据流?我怀疑我们可以为您提供更好的选择。 –
更新了第一篇文章。 – Odrai