【发布时间】:2016-05-28 07:24:30
【问题描述】:
我是使用 OpenMP 的新手,我想知道是否可以将单个指令锁定在循环中。 换句话说,在 for 循环中我有 5 条指令,比如说 A、B、C、D 和 E。“C”必须使用锁执行(因为它写入公共资源),其他指令可以在平行线。有没有办法做到这一点?
让我用伪代码来阐明我想要实现的目标
#pragma omp parallel for
for(int i = 0; i<size; i++){
A;
B;
lock(C);
D;
E;
}
【问题讨论】:
-
如果
C是一个非常简单的操作(比如C++;),使用atomic,否则使用critical区域。 -
如果对您有帮助,请接受以下答案。