【发布时间】:2022-09-30 15:15:07
【问题描述】:
这听起来像是一个过于琐碎的问题,而且我认为我过于复杂了,因为我已经好几个月没有找到答案了。在 Golang、Scala/Akka 等中有很简单的方法可以做到这一点,但我似乎在 .NET 中找不到任何东西。
我需要的是拥有一个相互独立的任务列表的能力,以及在指定(且易于更改)数量的线程上同时执行它们的能力。
基本上是这样的:
int numberOfParallelThreads = 3; // changeable
Queue<Task> pendingTasks = GetPendingTasks(); // returns 80 items
await SomeBuiltInDotNetParallelExecutableManager.RunAllTasksWithSpecifiedConcurrency(pendingTasks, numberOfParallelThreads);
而SomeBuiltInDotNetParallelExecutableManager 将一次执行 80 个任务,三个;即当一个完成时,它会从队列中抽取下一个,直到队列用完。
有Task.WhenAll 和Task.WaitAll,但不能指定其中的最大并行线程数。
是否有内置的简单方法可以做到这一点?
标签: c# .net multithreading threadpool