Sobes.tech
Junior

Qu'est-ce qu'un processus et un thread ? En quoi diffèrent-ils ?

sobes.tech IA

Réponse de l'IA

Un processus est un programme en cours d'exécution disposant de son propre espace d'adressage, de ressources (descripteurs de fichiers, connexions réseau) et de contexte d'exécution.

Un thread (fil d'exécution, thread) est la plus petite unité d'exécution au sein d'un processus. Un processus peut contenir un ou plusieurs threads, qui partagent ses ressources mais ont leur propre pile d'appels, contexte d'exécution et compteur d'instructions.

Principales différences:

Caractéristique Processus Thread
Isolation Complète. Un processus n'affecte pas un autre. Partielle. Les threads partagent les ressources du processus.
Échange de données Via IPC (communication inter-processus). Léger. Via des variables communes dans le processus.
Changement de contexte Coûteux. Nécessite de sauvegarder et restaurer tout l'état du processus. Moins cher. Nécessite de sauvegarder et restaurer l'état du thread.
Création Coûteuse. Nécessite l'allocation de ressources. Plus économique. Nécessite l'allocation d'une pile.
Fin La fin du processus entraîne la fin de tous ses threads. La fin d'un thread n'affecte pas les autres threads ni le processus.

Exemple de création de processus (commande externe) en Java:

// Java
Process process = Runtime.getRuntime().exec("ls -l");
// Travailler avec le processus : obtenir entrée/sortie, etc.

Exemple de création de thread en Java:

// Java
Runnable task = () -> {
    System.out.println("Bonjour du thread : " + Thread.currentThread().getName());
};

Thread thread = new Thread(task);
thread.start(); // Démarrer le thread