Sommaire

Gestion des threads

Un thread (hormis le thread principal, créé automatiquement par le noyau) est créé par un appel système dans lequel on lui associe une fonction à exécuter.

Quand le thread se termine, soit parce que sa fonction se termine ou exécute l’instruction return, soit parce qu’il exécute un appel système spécifique, soit parce qu’il a été l’objet d’un appel système d’annulation, il reste dans un état proche de celui d’un processus zombie, jusqu’à ce qu’un thread du même processus le "joigne" (sauf s’il avait préalablement été "détaché").

Nous allons étudier les différents appels système correspondant à ces phases de déroulement d’un thread, puis nous verrons les techniques de synchronisation des threads.

1. Création d’un thread : pthread_create()

Pour créer un thread, Linux utilise l’appel système clone() qui permet de créer différents types de processus enfants. Dans le cas d’un thread, cet appel système est utilisé avec une option spécifique, CLONE_THREAD.

Dans la suite, nous décrivons les fonctions de gestion de threads, de la bibliothèque libpthread, car il est conseillé de les utiliser de préférence aux appels système sous-jacents : elles sont normalisées POSIX ...