我有一个数组。因此,我需要使用 omp_set_lock 和 omp_unset_lock 为每个值填充两个线程。第一个线程应该写第一个值,然后第二个数组应该写第二个值等等。我不知道该怎么做,因为在 openmp 中你不能明确地让一个线程等待另一个。有什么想法吗?
最佳答案
为什么不试试 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);
}
关于c++ - 具有两个串联线程的 OpenMP 填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33064972/