用两个线程串联的OpenMP填充数组
OpenMP filling array with two threads in series
我有一个数组。因此,我需要用两个线程填充它,分别使用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++中用vector填充一个简单的动态数组
- OpenMP阵列性能较差
- 如何使用用户输入在C++中正确填充2D数组
- 如何找到大小'x'数组是否完全填充,在C++?
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 通过for循环使用用户输入填充列表
- OpenMP:并行更新数组总是需要减少数组吗
- 如何使用OpenMP并行这两个循环
- 从python调用openMP共享库时,未定义opnMP函数
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 如何使用OpenMP并行化此矩阵时间矢量运算
- 如何使用OpenMP使这个循环并行
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 查找最近配对时的OpenMP竞赛条件
- 使用输入打破 OpenMP 中的循环
- 如何正确填充在堆上分配的二维数组?
- 使用OpenMP填充一个大数组
- OpenMP线程之间的矢量填充