【问题标题】:Is it possible to force TPL to always use the same thread indexes across different Parallel.For?是否可以强制 TPL 在不同的 Parallel.For 中始终使用相同的线程索引?
【发布时间】: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


【解决方案1】:

不,这是不可能的。

如果您想要手动控制线程,TPL 不是正确的抽象。直接使用 System.Threading。

【讨论】:

    猜你喜欢
    • 2015-08-23
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2012-03-09
    • 1970-01-01
    • 2012-09-05
    相关资源
    最近更新 更多