gpt4 book ai didi

.net - System.Threading.Tasks - 限制并发任务的数量

转载 作者:行者123 更新时间:2023-12-02 09:39:00 24 4
gpt4 key购买 nike

我刚刚开始研究 .Net 4.0 中新的“System.Threading.Tasks”优点,想知道是否有任何内置支持来限制同时运行的并发任务的数量,或者是否应该这样做被人工处理。

E.G:如果我需要调用一个计算方法 100 次,有没有办法设置 100 个任务,但只有 5 个同时执行?答案可能只是创建 5 个任务,调用 Task.WaitAny,并在前一个任务完成时创建一个新任务。如果有更好的方法来做到这一点,我只是想确保我不会错过任何技巧。

基本上,是否有一种内置的方法可以做到这一点:

Dim taskArray() = {New Task(Function() DoComputation1()),
New Task(Function() DoComputation2()),
...
New Task(Function() DoComputation100())}

Dim maxConcurrentThreads As Integer = 5
RunAllTasks(taskArray, maxConcurrentThreads)

谢谢你的帮助。

最佳答案

我知道这已经快一年了,但我找到了一种更简单的方法来实现这一目标,所以我想我会分享:

Dim actionsArray() As Action = 
new Action(){
New Action(Sub() DoComputation1()),
New Action(Sub() DoComputation2()),
...
New Action(Sub() DoComputation100())
}

System.Threading.Tasks.Parallel.Invoke(New Tasks.ParallelOptions() With {.MaxDegreeOfParallelism = 5}, actionsArray)

瞧!

关于.net - System.Threading.Tasks - 限制并发任务的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2898609/

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