在使用OpenMP期间如何仅保留for循环后剩下的主线程?

时间:2017-04-04 02:29:46

标签: multithreading parallel-processing openmp

我的OpenMP计划是这样的:

#include <unistd.h>
#include <stdio.h>
#include <omp.h>

int main(void){
        #pragma omp parallel for
        for(int i = 0; i < 2; i++)
        {
            sleep(30);
            printf("Exit loop\n");
        }

        sleep(40);

        return 0;
}

运行它并检查线程:

# ./a.out &
[1] 26976
# ps -T 26976
  PID  SPID TTY      STAT   TIME COMMAND
26976 26976 pts/0    Sl     0:00 ./a.out
26976 26977 pts/0    Sl     0:00 ./a.out

我们可以看到for循环被扩展为2独立线程,这是预期的。但是在循环结束后(打印出“Exit loop”),我发现仍有2个线程:

# Exit loop
Exit loop
ps -T 26976
  PID  SPID TTY      STAT   TIME COMMAND
26976 26976 pts/0    Sl     0:00 ./a.out
26976 26977 pts/0    Sl     0:00 ./a.out

从我的直觉来看,我认为只剩下主线程,其他线程应该消失。有没有办法达到这个效果?

0 个答案:

没有答案