次のコードでは、openMP のタスク プラグマを使用したいと思います。
std::vector<Class*> myVectorClass;
#pragma omp parallel
{
#pragma omp single nowait
{
for (std::list<Class*>::iterator it = myClass.begin(); it != myClass.end();) {
#pragma omp task firstprivate(it)
(*it)->function(t, myVectorClass))
++it;
}
}
#pragma omp taskwait
}
問題、またはその 1 つは、myVectorClass がオブジェクトへのポインターであることです。したがって、このベクターを共有として設定することはできません。関数によって myVectorClass が変更されます。前のコードがクラッシュします。では、前のコードを (for ループ プラグマを使用せずに) 変更する方法を教えていただけますか?
ありがとう