我已經將3個任務並行放置:打印最小值,最大值和兩個數字的平均值。第一個任務打印最小值兩次,我期望它的輸出是連續的。C++中parallel_invoke的意外輸出
int wmain()
{
__int64 elapsed;
elapsed = time_call([&]
{
double a = 1.0;
double b = 5.0;
parallel_invoke(
[&]{for(size_t i = 0; i < 2; ++i)
{
PrintMinValue(a, b);
}},
[&]{PrintMaxValue(a, b);},
[&]{PrintAvgValue(a, b);});
});
wcout << L"parallel time: " << elapsed << L" ms" << endl << endl;
}
我跑了這個程序幾次。 所有輸出如5,3,1,1或3,1,1,5是可以理解的。 但是,一些輸出如1,5,3,1並不明顯。這意味着必須在連續塊中打印兩次「1」(最小值)的第一個任務被拆分。爲什麼?
「打印」只是一個例子。例如,您可以使用任務。結果將是相同的。 – 2013-03-18 17:15:50