통과 "공유"포인터 :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 루프 pragma를 사용하지 않고 이전 코드를 수정하는 방법을 알려주시겠습니까?
감사
'기능()'은 무엇입니까? 그것은'myVectorClass'를 어떻게 수정합니까? – kangshiyin
function()이 여기에 표시하는 것은 상당히 복잡하지만 myVectorClass에 요소를 추가합니다. – smc
답변으로 질문이 해결되면 답변 옆에있는 체크 표시를 클릭하여 동의하십시오. 제목에 "해결 됨"을 편집하지 마십시오. – Mysticial