2
我無法弄清楚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);
我會建議讓鎖定靜態,以便它會檢查鎖定條件,然後進入循環。我希望它能幫助你。 –