Créer un nouveau thread

Problème

Vous souhaitez que votre programme effectue plusieurs tâches en parallèle en créant des threads dédiés.

Solution

Exécutez la fonction à paralléliser à l’aide de pthread_create()ou, avec un compilateur compatible C11, de thrd_create().

Discussion

La fonction pthread_create() prend quatre arguments. Le premier est un pointeur sur un entier de type pthread_t. Cet entier contiendra l’identifiant du thread ainsi créé. Le deuxième argument permet de spécifier des options au thread. Le troisième et le quatrième sont relatifs à la fonction à exécuter dans le thread. Le troisième est un pointeur sur cette fonction, dont voici le prototype :


void *fonction (void *arg);
 

Le quatrième argument, quant à lui, est un pointeur qui sera fourni tel quel à la fonction. L’exemple suivant effectue un long calcul (une simple addition) dans un thread pendant que le programme principal effectue son travail en testant de temps en temps si le thread a fini son long calcul.


#include <stdio.h> 
#include <stdlib.h> 
 
#include <pthread.h> 
 
typedef struct 
{ 
  int a; 
  int b; 
  int result; 
  char done; 
} addition_t; 
 
void * 
addition (void *arg) 
{ 
  addition_t *ad = arg; 
  ad->result = ad->a + ad->b; 
  ad->done = 1; 
  pthread_exit (NULL); 
} 
 
int ...
Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Éviter les processus zombies
Suivant
Limiter l'accès à une section critique