Programmation concurrente
La programmation concurrente est un style de programmation tenant compte, dans un programme, de l'existence de plusieurs flots de contrôle. Ces flôts de contrôle multiples peuvent être appelés threads, processus ou tâches. Ils sont par définition matérialisés par une pile d'exécution et un ensemble de données privées.
Les threads disposent d'une zone de mémoire partagée alors que les processus sont strictement isolés.
La programmation concurrente est plus complexe et difficile que la programmation impérative (ou programmation orientée objets), fonctionnelle ou encore déclarative. En fait, à chacun de ces modèles de programmation on peut associer une version concurrente, par extension de la sémantique du langage de programmation associé. Par exemple, Prolog a été étendu en Concurrent Prolog, Java et Ada 95 sont des langages à objets avec des primitives pour la concurrence, etc.
Les techniques spécifiques pour le traitement de la concurrence sont