関数が一度forループ内のC++マルチスレッドは機能しませんか?以下
(A)
for (i = 0; i < 5; i=i+1)
multiplicationTask[i] = thread([&] { slice3.push_back(multiParallel(slice1[i], slice2[i])); });
を使用して複数のスレッド上で実行し、(B)
multiplicationTask[0] = thread([&] { slice3.push_back(multiParallel(slice1[0], slice2[0])); });
multiplicationTask[1] = thread([&] { slice3.push_back(multiParallel(slice1[1], slice2[1])); });
multiplicationTask[2] = thread([&] { slice3.push_back(multiParallel(slice1[2], slice2[2])); });
multiplicationTask[3] = thread([&] { slice3.push_back(multiParallel(slice1[3], slice2[3])); });
multiplicationTask[4] = thread([&] { slice3.push_back(multiParallel(slice1[4], slice2[4])); });
両方のアプローチが実行されるが、これを使用して、コードの一部であります最初は誤った値を返します。どうして?
'' @lice3'の 'push_back'がスレッドセーフでない限り、この方法で使うのは間違っています – LWimsey