【发布时间】:2012-05-03 06:42:26
【问题描述】:
我使用 MS Visual Studio 2010、C++、PPL 库进行并行计算和 Qt 库。
Concurrency::parallel_for (size_t(0), m_Engines.size(), [&](size_t i)
{
for (size_t j = 1;j <= m_Iterations;j++)
{
Compute(i);//some time-cosuming thing
}
});
假设我们有 3 个独立的引擎,每个引擎都有 m_Iterations。
每个引擎的进度条如下所示:
进度1:||||||||
进度2:|||||
进度3:|||||||||||
我想要单个进度条(而不是上面显示的),它显示向后进度条(其中显示最小值):
总进度:|||||
假设我们有QProgressBar * pProgressbar、CoreApplication::processEvents()“code sn-ps”。我应该如何修改代码以使用并发运行时技术实现内部循环的单个进度条的想法。
【问题讨论】:
-
为什么要显示最小值而不是3的平均值?
-
我想知道100%的进度意味着所有的任务都完成了
-
在这种情况下,您可能需要一个从 0 到
m_Iterations*3的进度条,并显示所有引擎完成的迭代总和。 -
哦,你是对的。那么,我必须使用 Concurrency::critical_section 来更新进度条吗?
标签: c++ progress-bar parallel-processing nested-loops ppl