Снятие блокировки нити, когда она спит - PullRequest
0 голосов
/ 17 апреля 2019

Как я могу снять блокировку потока, когда он спит?

Когда я вызываю 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);
      }
}
...