私はtbb::parallel_for
を使用して、メインスレッドから呼び出されるループをマルチスレッドに使用しています。そのループでは、進行状況を反映するためにUIを更新するメインスレッドが必要です。私が観察したことから、tbb::parallel_for
は常に呼び出し元スレッド+ Nワーカースレッドを使用します。しかし、私は、呼び出しスレッドの使用が保証されているのか、まさにそのような場合に起こったのか、疑問に思っています。ここでtbb :: parallel_forは常に呼び出し側のスレッドを利用しますか
は、サンプルコードは次のとおりです。
static thread_local bool _mainThread = false; // false in all threads
_mainThread = true; // now true in main thread, but false in others
tbb::parallel_for(start, end, *this);
void Bender::processor::operator()(size_t i) const
{
...
if(_mainThread) // only main thread will issue events
ProgressUpdatedEvent(progress);
}
ありがとう!