我想用的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