我正在尝试使用 openmp 编写一个程序,其中结构块是一个 while 循环。
#pragma omp parallel num_threads(x)
while(condition){
}
我必须决定编写任何线程停止条件的方式。我需要知道在 while 循环中使用 break 语句是否合适。
我正在尝试使用 openmp 编写一个程序,其中结构块是一个 while 循环。
#pragma omp parallel num_threads(x)
while(condition){
}
我必须决定编写任何线程停止条件的方式。我需要知道在 while 循环中使用 break 语句是否合适。
我认为最好使用 omp 取消。
该代码看起来与此类似。
#pragma omp parallel
{
while(true) {
#pragma omp cancellation point parallel
// Do the heavy work
if(condition==false) {
#pragma omp cancel parallel
}
}
}
你的问题有点不完整。你说“任何线程都会停止的条件”,但是数学之后呢:
情况1:
bool abort = 0;
#pragma omp parallel num_threads(x) private(abort)
{
while(!abort)
{
// The work you need to do.
#pragma omp critical
{
if(condition==false)
{
abort = 1;
}
}
}
}
案例二:
#pragma omp parallel num_threads(x)
{
while(condition)
{
// The work you need to do.
}
}