美文网首页
private,shared,firstprivate,last

private,shared,firstprivate,last

作者: 小幸运Q | 来源:发表于2020-04-02 11:20 被阅读0次

private:传入的参数创建形参并初始化为0,跟外面的没有产生关系,线程结束退出即销毁,不影响原值。

shared:不提了

firstprivate:传入的参数创建形参并初始化为原参的值。其他跟private一样。

#include<stdio.h>
#include <omp.h>
int main(){
    int N=100;
    #pragma omp parallel num_threads(10) firstprivate(N)
    {
        //N=omp_get_thread_num();
        printf("thread%d :  %d\n",omp_get_thread_num(),N);
        N=omp_get_thread_num();
    }
    printf("%d\n",N);
}

# thread8 :  100
# .....
# thread0 :  100
# 100

lastprivate:最后那个循环最后的值覆盖掉原变量的值

#include<stdio.h>
#include <omp.h>
int main(){
    int N=100;
    #pragma omp parallel  for lastprivate(N)
        for(int i=0;i<40;i++){
                printf("thread%d :  %d\n",omp_get_thread_num(),N);
                N=omp_get_thread_num();
        }
    printf("%d\n",N);
}
# thread1 :  1
# thread4 :  0
# 7
# 因为最多八个线程,所以for循环有40也只能跑到0->7

相关文章

网友评论

      本文标题:private,shared,firstprivate,last

      本文链接:https://www.haomeiwen.com/subject/uvmnuhtx.html