OpenMP填充数组,有两个串联的线程

时间:2015-10-11 12:31:02

标签: c++ arrays synchronization openmp

我有一个数组。我需要使用omp_set_lock和omp_unset_lock来为每个值填充两个线程。第一个线程应该写第一个值,然后第二个数组应该写第二个值等。我不知道怎么做,因为,在openmp中你不能明确地让一个线程等待另一个。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

为什么不尝试使用omp_set_lock / omp_unset_lock函数?

omp_lock_t lock;

omp_init_lock(&lock);

#pragma omp parallel for

bool thread1 = true;
for (int i = 0; i < arr.size(); ++i) {
    omp_set_lock(&lock);
    if (thread1 == true) {
        arr[i] = fromThread1();
        thread1 = false;
    } else {
        arr[i] = fromThread2();
        thread1 = true;
    }
    omp_unset_lock(&lock);
}