我要处理 1000 条输入消息。我正在循环输入集合并为要处理的每条消息启动新任务。
//Assume this messages collection contains 1000 items
var messages = new List<string>();
foreach (var msg in messages)
{
Task.Factory.StartNew(() =>
{
Process(msg);
});
}
我们可以猜测当时最多同时处理多少条消息(假设是普通的四核处理器),或者我们可以限制当时要处理的最大消息数吗?
如何确保此消息以与集合相同的顺序/顺序得到处理?
最佳答案
你可以使用 Parallel.Foreach
并依靠MaxDegreeOfParallelism
相反。
Parallel.ForEach(messages, new ParallelOptions {MaxDegreeOfParallelism = 10},
msg =>
{
// logic
Process(msg);
});
关于c# - 如何限制c#中的最大并行任务数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36564596/