【发布时间】:2012-07-23 15:36:17
【问题描述】:
我有一个数字运算函数,所以我使用 PPL 将其并行化。但是由于某种原因,另一个开发人员要求此函数串行运行。我需要提供一个参数,以便他可以调用我的函数在串行模式下......我不想复制代码,所以我需要一种方法来限制 PPL 线程的数量......虽然我很难过
Concurrency::SchedulerPolicy sp( 1, Concurrency::MaxConcurrency, 1 );
CurrentScheduler::Create(sp);
PPL 创建两个线程并并行运行我的代码...关于如何序列化 ppl 增强代码的任何建议。
【问题讨论】:
-
如果你为函数构建一个重载/参数化它以便你可以进入串行版本,你可能会更快乐。
-
函数重载会导致复制较低层次的函数,因为并行化在多个级别。我不愿意遵循超载..将来维护将很难处理...无论如何谢谢
-
告诉其他开发人员从他/她的代码/数据中获取所有全局变量、静态变量等,这样就没有关系了?
-
不!对于该开发人员而言,使用相同输入获取此函数每次运行的准确结果列表非常重要。由于这是并行化的,现在结果列表的顺序不同!并且不可能对结果列表进行排序,因为它们是复杂的数据结构。我被卡住了,很失望尝试 PPL。如果我使用的是 OpenMP,那将只是一行指令。
标签: multithreading visual-studio-2010 concurrency parallel-processing ppl