我有一个 C# 4.0 应用程序,其“高优先级”和“低优先级”队列实现如下:
BlockingCollection highPriority = new BlockingCollection(1000); BlockingCollection lowPriority = new BlockingCollection(1000);
在 highPriority 中产生的任何数据都应该在 lowPriority 中产生的任何数据之前被使用。这里的转折是数据可以随时生成到两个队列中的任何一个。因此,在我使用 highPriority 中的所有数据之后,我将使用可能处于 lowPriority 的任何数据。如果在我以低优先级消费数据时,以高优先级产生新数据,我想以低优先级完成当前项目的消费,然后切换回并以高优先级处理数据。
任何人都可以建议一种算法来帮助解决这个问题吗?伪代码很好。非常感谢。