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 |