728x90

ordered

- ciritical + 순서대로 수행

- 스레드가 순서대로 수행되는걸 볼수있음

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

int main()
{
        int i, a[10];
        omp_set_num_threads(4);
#pragma omp parallel private(i)
{
        #pragma omp for //ordered
        for(i=0; i<10; i++) {
                a[i] = i * 2;
//              #pragma omp ordered
                printf("a[%d] = %d\n", i, a[i]);
        }
}
}

 

 

 

lock

- critical과 동일하나 더 유용하며, 쓰임새가 다양함

- 동기화 영역을 지정 -> set_lock, unset_lock

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

int main()
{
        int x = 1;
        omp_lock_t lock;

        omp_init_lock(&lock);

        omp_set_num_threads(4);
#pragma omp parallel
{
        omp_set_lock(&lock);
        x++;
        printf("x = %d\n", x);
        omp_unset_lock(&lock);
} // pragma omp parallel
}

 

 

 

 

300x250

'컴퓨터과학 > 기타' 카테고리의 다른 글

openmp - 24. 테스크  (0) 2020.07.30
openmp - 23. 스캐줄링과 만델브로트  (0) 2020.07.30
openmp - 21. nowait  (0) 2020.07.30
openmp - 20. 작업 분할 지시어들  (0) 2020.07.30
openmp - 19. 중첩 스레드  (0) 2020.07.30

+ Recent posts