OpenMP 中的锁(lock)
是一种同步机制,用于保护共享资源,以防止多个线程同时访问或修改它,从而避免竞态条件。锁允许线程在访问临界区之前获取锁,并在退出临界区时释放锁。这样可以确保在任何给定时间只有一个线程能够访问临界区,从而保证了数据的一致性。
简单锁
最基本的锁,只能被一个线程锁定。当一个线程锁定了简单锁时,其他线程必须等待锁的释放才能继续执行。
#include <iostream>
#include <omp.h>
using namespace std;
int main(int argc, char* argv[]){
omp_lock_t lock;
omp_init_lock(&lock);
int s = 0;
#pragma omp parallel num_threads(800)
{
omp_set_lock(&lock);
s++;
omp_unset_lock(&lock);
}
omp_destroy_lock(&lock);
cout << "s = " << s << endl;
return 0;
}
lock
s = 800 // 加锁
s = 763 // 不加锁
大师傅
标签:同步,int,lock,临界,omp,线程,OpenMP,机制 From: https://www.cnblogs.com/tao-gak567/p/18075218