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