线程同步之互斥锁函数
前文介绍了互斥锁同步的两种方法:atomic和critical,本章介绍OpenMP提供的互斥锁函数。互斥锁函数类似于Windows、Linux下的mutex。
1. 互斥锁函数
函数声明 功能
void omp_init_lock(omp_lock*) 初始化互斥器
void omp_destroy_lock(omp_lock*) 销毁互斥器
void omp_set_lock(omp_lock*) 获得互斥器
void omp_unset_lock(omp_lock*) 释放互斥器
void omp_test_lock(omp_lock*) 试图获得互斥器,如果获得成功则返回true,否则返回false
2. 互斥锁示例
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
#include
#include
static omp_lock_t lock;
int main()
{
omp_init_lock(&lock); //初始化互斥锁
#pragma omp parallel for
for(int i = 0; i
{
omp_set_lock(&lock); //获得互斥器
std::cout <
std::cout <
omp_unset_lock(&lock); //释放互斥器
}
omp_destroy_lock(&lock); //销毁互斥器
return 0;
}
#include
#include
static omp_lock_t lock;
int main()
{
omp_init_lock(&lock); //初始化互斥锁
#pragma omp parallel for
for(int i = 0; i < 5; ++i)
{
omp_set_lock