別のスレッドで実行したい関数があります。この関数は、データ構造にデータを取り込みます。次に例を示します。
per_thread(int start_value, std::vector<SomeStruct>& reference)
{
for ( size_t i = 0; i < 500; i++ )
{
reference.push_back(func(i));
if (i == 2)
send_signal_back();
}
}
ただし、これが何度かループを通過した後、これを開始値として使用して別のスレッドを開始したいと思います。残念ながら、シグナルを親スレッドに送り返す方法がわかりません。
だから私はこのようなものが欲しい:
for( size_t j = 0; j < 5000; j += num_threads)
{
for (size_t i = 0; i < num_threads; i++)
{
std::async(per_thread(foo(j+i), std::ref(vec));
//wait for signal
}
}
そのような信号を送信するにはどうすればよいですか?