pow*_*tte 6 c# linq queue round-robin
我经常需要处理一个项目队列,其中没有一个用户应该能够阻塞队列,并且队列中的项目应该按某种顺序处理.我经常写一个类来做这个,但我认为应该有一些通用版本,但我找不到一个.
所以我正在寻找一个队列类,我可以在其中指定一个类型,一个分区选择器和一个选择器,以便我可以将对象添加到队列中,然后当我将对象退出时,我从第一个对象中获取我的订单说明符排序的下一个分区.
例如,我会像这样调用如何分区以及如何对队列进行排序:
var queue = new RoundRobinQueue<Message>(
_ => _.UserID,
_ => _.SendDate
);
Run Code Online (Sandbox Code Playgroud)
后,我已经添加了很多信息的,我可以Parallel.ForEach在我的队列中的项目,并处理它们在最早的顺序SendDate下一个User.这样,如果一个用户很慢,他的项目将不会阻塞队列,因为他只获得一个线程,但如果只有一个用户,他是唯一的分区,所以他获得所有线程.
我看了一遍,但在C#中找不到一个很好的通用实现.有任何想法吗?
| 归档时间: |
|
| 查看次数: |
1303 次 |
| 最近记录: |