是否可以为每个循环处理并行处理队列中的项目:
编辑:这是关于System.Threading.Tasks的Parallel.ForEach功能
答案 0 :(得分:8)
使用Reactive Extensions订阅队列并执行新任务中的每个项目。 您不必阻止或等待新项目,因为它将被推送到您的订阅lambda并且您的执行/处理将是并行的。
答案 1 :(得分:1)
使用类似这样的BlockingCollection:
var bc = new BlockingCollection<int>();
Task.Factory.StartNew(() =>
{
ParallelOptions options = new ParallelOptions
{
MaxDegreeOfParallelism = 30
};
Parallel.ForEach(bc.GetConsumingEnumerable(), options, i => { });
});
答案 2 :(得分:0)
我认为如果队列具体实现是同步的,那么基本上这是消费者 - 生产者场景。
答案 3 :(得分:0)
听起来你在谈论一个典型的生产者/消费者情况。令人惊讶的是,对于内置于.Net的这个模型没有更多的直接支持。我在.Net中遇到的最接近的一次隐藏在并发和协调运行时内,它是Microsoft Robotics套件的一部分。祝你现在好运。
但是一旦你知道要搜索什么,快速谷歌检查确实提供了一些其他潜在的选择。