我在访问相同 BlockingCollection 的 C# 应用程序中使用两个线程。这很好用,但我想两次检索第一个值,以便两个线程检索相同的值 *。
几秒钟后,我想轮询两个线程的 currentIndex 并删除每个 value < index. 例如,线程的最低 currentIndex 为 5,应用程序删除队列中索引 0 -5 处的项目。另一种解决方案是如果所有线程都处理了该值,则删除队列中的值。
我怎样才能做到这一点?我想我需要另一种类型的缓冲区..?
先感谢您!
*如果thread1调用了.Take(),则该item在collection中被移除,thread2无法再次获取相同的item。
更新:
我想将数据存储在缓冲区中,例如 thread1 将数据保存到 HDD,thread2 分析(相同)数据(并发)。