Sommaire

Concurrence, parallélisme et asynchronisme

La programmation parallèle ou pseudo-parallèle avec le multithreading, la programmation concurrente et la programmation asynchrone sont tous des sujets liés. Cependant, il est très important de nuancer les concepts de base sous-jacents et les objectifs de chacun de ces paradigmes de programmation.

En effet, les objectifs recherchés via les notions de concurrence, parallélisme et asynchronisme sont différents et pour les distinguer voici une brève définition de chacune de ces trois notions :

1. La concurrence : on parle de la programmation concurrente lorsque plusieurs threads s’exécutant de façon pseudo-parallèle accèdent à des ressources communes.

Par exemple, deux programmes qui accèdent à une même variable mémoire en lecture puis en écriture peuvent engendrer une incohérence relative à la valeur de cette variable en mémoire. En effet, si ces deux programmes lisent l’un après l’autre le contenu de la variable puis, toujours l’un après l’autre, incrémentent de 1 l’ancienne valeur et mettent à jour cette variable en mémoire, alors la nouvelle valeur sera incrémentée uniquement de la valeur 1 et non pas de 2, puisque le deuxième programme aura écrasé la valeur mise à jour par le premier programme.

La programmation concurrente propose des techniques qui permettent ...