gpt4 book ai didi

c# - 线程池和 Parallel.For 组合 - 是否可能

转载 作者:行者123 更新时间:2023-11-30 23:18:55 26 4
gpt4 key购买 nike

在我的应用程序中,我有许多类可以使用 Parallel.For 语句计算它们的任务。每个 Parallel.For 使用自己的 ParallelOption 来设置最大并行度。

应用程序流程取决于用户设置,因此存在以下情况:A 类(并行计算)调用 B 类(也并行计算)或它调用 C 类(不使用任何并行计算) .

另一种模式是递归调用,其中在每个递归级别上完成并行计算。

我的问题:

是否可以设置一个全局线程池,所有类都使用它来进行计算,并且线程数在全局范围内为应用程序控制?

是否可以将线程池​​与 Parallel.For 结合起来,使大部分现有代码保持不变?

与独立的 parallel.for 调用相比,线程池有多少开销(我知道这完全取决于,最后我需要做一些测试,但也许你有一些好的和坏的过期和好的建议)

最佳答案

Is it possible to setup a global thread pool that is used by all classes to do its calculatins, and the numer of threads is controlled globally for application?

这已经是事实了。目前,应用程序线程池由 .NET 运行时管理。所以您可以非常确定,您的所有类(在运行的应用程序中)都使用相同的线程池。您可以使用 Task、静态 ThreadPool 类或静态 Parallel 类访问线程池。

Is it possible to combine thread pool with Parallel.For so most of the existing code stays unchanged?

Parallel.For 在内部使用 TasksTaskScheduler。因此,将使用相同的线程池。

关于c# - 线程池和 Parallel.For 组合 - 是否可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551517/

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