[C] Threads

Introduction 

 Le langage C supporte l'utilisation des threads qui sont des tâches sous-jacentes d'un processus permettant d'effectuer plusieurs tâches en parallèle. 

 Manuel 

 pthread_create 

 La fonction pthread_create va permettre d'exécuter une fonction dans un nouveau thread. 

 pthread_join 

 La fonction pthread_join va permettre  d'attendre que le thread soit terminé avant de continuer à exécuter la suite du programme. 

 Exemple 

 Voici un exemple d'utilisation de thread très simpliste : 

 #include <stdio.h>

#include <pthread.h>

// Cette fonction sera exécutée par le thread

void *fonctionThread(void *arg) {

 int thread_num = *((int *)arg); // Récupération du numéro du thread

 // Affichage du numéro du thread

 printf("Je suis le thread n°%d\n", thread_num);

 

 // Il est nécessaire de renvoyer une valeur

 return NULL;

}

int main() {

 pthread_t thread1, thread2;

 int num1 = 1, num2 = 2;

 // Création du premier thread

 if (pthread_create(&thread1, NULL, fonctionThread, (void *)&num1) != 0) {

 fprintf(stderr, "Erreur lors de la création du thread 1.\n");

 return 1;

 }

 // Création du deuxième thread

 if (pthread_create(&thread2, NULL, fonctionThread, (void *)&num2) != 0) {

 fprintf(stderr, "Erreur lors de la création du thread 2.\n");

 return 1;

 }

 // Attente de la fin d'exécution des threads

 if (pthread_join(thread1, NULL) != 0) {

 fprintf(stderr, "Erreur lors de l'attente du thread 1.\n");

 return 1;

 }

 if (pthread_join(thread2, NULL) != 0) {

 fprintf(stderr, "Erreur lors de l'attente du thread 2.\n");

 return 1;

 }

 printf("Les threads ont terminé leur exécution.\n");

 return 0;

}

 

  