Pthread_t ne démarre pas

J’ai écrit ce bref exemple afin de comprendre la programmation des threads en C. Mais il n’y a pas de sortie. Voici le code.

#include  #include  #include  int i=0; pthread_mutex_t mutex; void * fonction(){ pthread_mutex_lock(&mutex); printf("thread %d \n",i++); pthread_mutex_unlock(&mutex); pthread_exit(NULL); } int main(){ pthread_t a; pthread_mutex_init(&mutex,NULL); pthread_create(&a,NULL,fonction,NULL); return EXIT_SUCCESS; } 

Est-ce que quelqu’un peut m’aider ? Ps: je l’ai utilisé pour le comstackr

 gcc -pthread test.c -o test 

Insérez pthread_join(a, NULL) après pthread_create() et avant de return EXIT_SUCCESS; pour s’assurer que le thread enfant est terminé avant main() retour de main() .

pthread_join() est un moyen mais ce n’est pas la seule solution.

Si votre thread principal n’a pas (besoin) d’être en vie plus longtemps (que le thread qu’il crée), il pourrait simplement sortir avec pthread_exit(0) .

Lorsqu’un thread principal se ferme à l’aide de pthread_exit() le processus rest actif jusqu’à la fin du dernier thread du processus.

Ceci est utile lorsque le thread principal initialise / installe et démarre plusieurs threads et qu’il n’est alors plus nécessaire. Sinon, il devra attendre que tous les threads soient terminés (rappelez-vous que lorsque main () se ferme, tout le processus se termine – appeler pthread_exit() ne quittera que le thread principal, pas tout le processus).