Comment réutiliser des threads en utilisant pthread_exit ()

Mon ordinateur autorise 380 threads par processus, ce qui me convient parfaitement. Je n’ai aucun problème quand j’appelle 380 fois pour exécuter sdfpthread_create (). Mais un appel successif renvoie le erro 11 (ressource temporairement indisponible).

La solution apparente est d’utiliser pthread_exit (), mais je n’ai pas résolu le problème, la limite est toujours de 380 threads créés.

Comment puis-je réutiliser le fil?

#include  #include  #include  #include  #include  void *doSomeThing() { sleep(99); pthread_exit(NULL); } int main(void) { pthread_t tid; int i; int err; /* Create threads */ for (i=0; i<380; ++i) { err = pthread_create(&tid, NULL, doSomeThing, NULL); if (err != 0) printf("\n1) Can't create thread :[%s]", strerror(err)); } sleep(1); /* Reuse threads */ for (i=0; i<5; ++i) { err = pthread_create(&tid, NULL, doSomeThing, NULL); if (err != 0) printf("\n2) Can't create thread :[%s]", strerror(err)); } exit(0); } 

Vous devez appeler pthread_join(3) pour nettoyer réellement l’état de sortie du thread ou créer des threads non joignables.

Edi 0:

S’il vous plaît voir et lire :

  • pthread_create(3)
  • pthread_detach(3)
  • pthread_attr_setdetachstate(3)