假設我有一個的OpenMP 2.0 for循環運行一些操作:如何在任務工作,同時剩餘線程完成工作
#pragma omp parallel for schedule(static)
for (int i = 0; i < lim; ++i)
{
// do something thread-safe
}
threadSafeFunc();
unSafeFunc();
函子threadSafeFunc
完全是線程安全的這樣,而不是連續運行它畢竟這些迭代完成後,我想要獲得第一個線程完成從OpenMP循環中分配的任務以開始處理它,然後讓所有線程在執行unSafeFunc
之前等待。
我該怎麼做?
@JerryCoffin我很驚訝地聽到。我原以爲這會是一個比較常見的用例。 – arman
@JerryCoffin你能否激發前面的陳述?最新的標準似乎支持比簡單的循環結構更多的東西... – Massimiliano
@Massimiliano:好的 - 我很高興收回我的陳述(並且看着你的答案,也很高興被證明是錯誤的)。 –