我想用的OpenMP任務編譯指示下一個代碼: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
}
的問題,或其中之一,就是myVectorClass是一個指向對象。所以不可能將此矢量設置爲共享。 myVectorClass由函數修改。之前的代碼崩潰。那麼,你能告訴我如何修改以前的代碼(不使用for-loop編譯指示)嗎?
由於
是什麼'函數()'做什麼?它如何修改'myVectorClass'? – kangshiyin
函數function()在這裏顯示的相當複雜,但它向myVectorClass添加了元素。 – smc
如果答案解決了您的問題,請通過單擊答案旁邊的複選標記來接受它。不要在標題中編輯「解決」。 – Mysticial