我正在學習OpenMP的過程。這是一個循環,我使用這是for循環有效使用OpenMP
std::string result;
#pragma omp parallel
{
#pragma omp parallel for public(local_arg) reduction(+:result)
for(int i=0 ; i<Myvector.size();i++)
{
result = result + someMethod(urn,Myvector[i]);
}
}
現在someMethod(urn,Myvector[i])
將在上面的代碼中調用多個線程將返回一個字符串。該字符串需要附加到返回字符串。我的問題是我需要鎖定for循環中的語句嗎?有更好的方法嗎?有什麼建議麼 ?
是的,您需要在這種方式的結果周圍放置一個關鍵部分。我會在答案中寫出一個備選方案。 – defube
感謝您的期待。我還寫了一些使用簡化的els。不知道這是否有助於 – MistyD
哪個編譯器?可能你可以使用編譯器的併發/並行庫。 – Ajay