gpt4 book ai didi

c# - 通用 c# 循环(分区/排序)队列

转载 作者:太空狗 更新时间:2023-10-29 22:02:09 27 4
gpt4 key购买 nike

我经常需要处理一个项目队列,任何用户都不能阻止队列,并且队列中的项目应该按某种顺序处理。我经常编写一个类来执行此操作,但我认为应该有一些通用版本,但我找不到。

所以我正在寻找一个队列类,我可以在其中指定类型、分区选择器和排序选择器,这样我就可以将对象添加到队列中,然后当我取回对象时,我得到由我的顺序说明符排序的下一个分区中的第一个对象。

例如,我会这样调用指定如何分区以及如何对队列进行排序:

 var queue = new RoundRobinQueue<Message>(
_ => _.UserID,
_ => _.SendDate
);

在我添加了很多消息之后,我可以Parallel.ForEach 我队列中的项目并按照最早的 SendDate 的顺序为下一个处理它们用户。这样,如果一个用户速度慢,他的项目不会阻塞队列,因为他只有一个线程,但如果只有一个用户,他是唯一的分区,所以他可以得到所有线程。

我找遍了所有地方,但没能在 C# 中找到一个很好的通用实现。有什么想法吗?

最佳答案

查看 System.Collections.Concurrent 中定义的类。有一个通用的 ConcurrentQueue 以及更多用于生产者-消费者模式的基本构建 block 。

可用的类和接口(interface)总结在 MSDN 上.

关于c# - 通用 c# 循环(分区/排序)队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13943581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com