【发布时间】:2014-05-20 10:15:28
【问题描述】:
我在使用 Parallel.For 时遇到了内存问题。
是否可以强制 TPL 在不同的 Parallel.For 中始终使用相同的线程索引?
即使我在所有不同的 Parallel.For 中使用 MaxDegreeOfParallelism = Environment.ProcessorCount,TPL 也不会在两个连续的 Parallel.For 之间完全使用相同的线程池。
由于这个问题,我有内存问题。
我不明白为什么如果我的Environment.ProcessorCount = 2,TPL 不会在开始时只创建 2 个线程并将其重用于我所有后续的 Parallel.For。这是我的目标。
我该如何管理?
【问题讨论】:
-
你怎么知道你的记忆问题是因为这个问题而不是其他原因,或者可能是多种因素的组合?
-
你确定你的问题是 CPU 受限的吗? “TPL 不会在开始时只创建 2 个线程并将其重用于我所有后续的 Parallel.For。这是我的目标。”不,您的目标是编写在硬件上运行的软件。您的机器中有多少个处理器不应影响您的代码。
标签: c# multithreading task-parallel-library parallel.for