C++ OpenMP 锁定指令
C++ OpenMP lock istruction
我是 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;
}
在该锁之前使用 critical 以确保下一行代码仅由一个线程执行。
CRITICAL 的定义:CRITICAL 指令指定一个代码区域,一次只能由一个线程执行。
你可以这样做。
#pragma omp parallel for
for(int i = 0; i<size; i++){
A;
B;
#pragma omp critical
lock(C);
D;
E;
}
我是 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;
}
在该锁之前使用 critical 以确保下一行代码仅由一个线程执行。 CRITICAL 的定义:CRITICAL 指令指定一个代码区域,一次只能由一个线程执行。
你可以这样做。
#pragma omp parallel for
for(int i = 0; i<size; i++){
A;
B;
#pragma omp critical
lock(C);
D;
E;
}