首页 > 解决方案 > 线程休眠时释放锁

问题描述

线程休眠时如何释放线程锁?

当我调用 pthread_join() 时,它会运行得很好,但是我必须创建多个线程,并且由于它们的并发性,我不能调用 pthread_join()。如何在不调用 join 的情况下解决此问题。

pthread_mutex_t mut1;
pthread_mutex_init(&mut1, NULL);

void* funA(void* arg){    
      while(pthread_mutex_trylock(&mut1) != 0);
      sleep(10);
      // resources sharing
      pthread_mutex_unlock(&mut1);
      pthread_exit(NULL);
}

int main(){
      pthread_t id[9];
      for(int i = 0; i<9; i++){
          pthread_create(&id[i], NULL, &funA, NULL);
      }
}

标签: cmultithreadingoperating-systemsleep

解决方案


推荐阅读