我已经并行执行了 3 个任务:打印两个数字的最小值、最大值和平均值。第一个任务两次打印最小值,我希望它的输出是连续的。
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”(最小值)的第一个任务被拆分。为什么?