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 指令指定一次只能由一个线程执行的代码区域。
你可以这样做。
#pragma omp parallel for
for(int i = 0; i<size; i++){
A;
B;
#pragma omp critical
lock(C);
D;
E;
}
定义来源:https://computing.llnl.gov/tutorials/openMP/
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- 如何找到锁定Linux futex的C++行
- C++将文本文件中的数据读取到结构数组中
- 结构专业的原子类型如何免费锁定
- 锁定免费的C++数据结构,不可能
- 在并发数据结构中,什么级别的锁定粒度是好的
- C++ OpenMP 锁定结构
- 是否可以使用互斥锁来锁定数据结构中的一个元素?
- 使用原子锁定自由的单生产者多消费者数据结构
- 如何锁定由属于两个不同类的两个线程修改的数据结构