gpt4 book ai didi

c# - Parallel.ForEach() 是否在执行后立即销毁线程?

转载 作者:行者123 更新时间:2023-12-03 13:16:33 25 4
gpt4 key购买 nike

我有使用 Parallel.ForEach 的代码块,如下所示

    public void ReadValuesFromServers()
{
Parallel.ForEach(serverList, server =>
{
//Some logic
});
}
我将经常调用 ReadValuesFromServers() 方法(每 1 或 2 秒),我知道 Parallel.ForEach() 内部使用线程来处理命令。我想知道由 Parallel.ForEach() 创建的线程是否会在执行 Parallel.ForEach() 后立即销毁,或者是否会保留在 ThreadPool 中以供下一组执行。
还是使用 List<Task>更好?在这种情况下?

最佳答案

这取决于 ThreadPool 启发式。如果 ThreadPool判断当前池化线程数相对于当前工作需求过多,会自动decommit一些线程。否则,如果有频繁的工作需求,相同的线程将被 ThreadPool 一遍又一遍地重用。 .
如果您使用默认值 ParallelOptions,这是预期的行为。 .但也可以指定 ParallelOptions.TaskScheduler 不同于 TaskScheduler.Default ,可能是自定义的,并强制执行您可以想象(并且您能够实现)的任何类型的线程使用方案。

关于c# - Parallel.ForEach() 是否在执行后立即销毁线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65177001/

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