// 互斥锁
// void omp_init_lock(omp_lock_t*); // 初始化一个互斥锁
// void omp_destroy_lock(omp_lock_t*); // 结束一个互斥锁的使用并释放内存
// void omp_set_lock(omp_lock_t*); // 获得一个互斥锁
// void omp_unset_lock(omp_lock_t*); // 释放一个互斥锁
// int omp_test_lock(omp_lock_t*); // 试图获得一个互斥锁,并在成功时返回true,失败时返回false
omp_lock_t lck;
int id;
omp_init_lock(&lck);
// 默认会启动4个线程
#pragma omp parallel shared(lck) private(id)
{
id = omp_get_thread_num();
omp_set_lock(&lck);
// 使用lck,对各个线程对控制台的访问进行同步
cout << "我的线程ID为:" << id << endl;
omp_unset_lock(&lck);
while(!omp_test_lock(&lck))
cout << "获得互斥锁失败" << endl;
cout << "获得互斥锁成功" << endl;
omp_unset_lock(&lck);
}
omp_destroy_lock(&lck);
parallel lock
最新推荐文章于 2022-05-24 11:32:40 发布
545

被折叠的 条评论
为什么被折叠?



