[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;
}