【发布时间】:2014-04-10 06:41:48
【问题描述】:
我无法弄清楚 omp_nest_lock_t 和 omp_lock_t lck 之间的区别; 这段代码完美地同步了 longtask(),但在执行时无法找出它们之间的区别;
omp_nest_lock_t lck_n; //omp_lock_t lck;
int t_id;
omp_init_nest_lock(&lck_n); //omp_init_lock(&lck);
omp_set_num_threads(6);
#pragma omp parallel private(t_id) shared(lck_n)
{
t_id = omp_get_thread_num();
omp_set_nest_lock(&lck_n); //omp_set_lock(&lck);
printf("\nhi by %d\n",t_id);
long_task();
printf("My thread id is %d.\n", id);
omp_unset_nest_lock(&lck_n); //omp_unset_lock(&lck);
}
omp_destroy_nest_lock(&lck_n); //omp_destroy_lock(&lck);
【问题讨论】:
-
我建议将锁设为静态,以便检查锁定条件,然后进入循环。希望对你有帮助。
标签: c++ c multithreading parallel-processing openmp