Sommaire

Threads et processus

Quand un processus est créé, il est d’abord monothread. Ce thread initial, appelé thread principal (main thread) car c’est lui qui exécute la fonction main(), peut utiliser un appel système pour créer d’autres threads au sein du processus. Thread:principal

Il n’y a pas de hiérarchie particulière entre les threads d’un processus ni d’ordre particulier d’exécution.

Cependant, comme le thread principal exécute la fonction main(), quand il exécute l’instruction return ou termine la fonction main(), il provoque la terminaison du processus et de tous ses threads.

1. Threads et appels système de niveau processus

Nous avons vu qu’au départ Unix a été conçu comme un système multiprocessus, mais monothread. Par conséquent, de nombreux appels système s’appliquent au niveau du processus lui-même, quel que soit son nombre de threads.

a. Appel système execve() en contexte multithreads

Cet appel système provoque la terminaison immédiate de tous les threads du processus, à l’exception de celui qui a effectué l’appel.

b. Appel système fork() en contexte multithreads

Cet appel système provoque, dans le processus enfant, la disparition de tous les threads du processus parent, à l’exception de celui qui a effectué l’appel. Par contre, les variables globales et les objets mémoire ...