Découvrir la programmation concurrente

Cette page propose des activités pour découvrir la programmation concurrente avec Thymio.

La programmation concurrente, c’est quoi ?

Un programme séquentiel est une suite d’instruction déterministe, c’est à dire que, pour une certaine entrée de données, la même suite d’instruction sera toujours exécutée. Un programme concurrent est constitué d’un ensemble de sous-programmes séquentiels appelés processus. La programmation concurrente est utilisée à la fois pour obtenir un meilleur coût calcul ainsi que pour séparer les différentes parties d’un même programme.

Les instructions s’intercalent de manière non-déterministe: les vitesses relatives des processus ne sont pas connues en avance et peuvent changer d’une exécution à une autre. Par conséquent, beaucoup d’opérations différentes peuvent survenir pour le même programme concurrent. Cette caractéristique rend les programmes concurrents très difficiles à tester et corriger. Cependant, avec l'avènement des processeurs multi-coeur, ce style de programmation devient de plus en plus courant et donc très utile à maîtriser.

Et les Thymios dans tout ça?

Quand plusieurs Thymios sont utilisés en même temps, chacun peut être considéré comme un processus au sein d’un programme concurrent. On appelle habituellement ce type de programmes des programmes distribués, car chaque robot a son propre ordinateur, et ils ne peuvent interagir que par l’intermédiaire des capteurs.

Notre but est de concevoir et d’implémenter des méthodes de synchronisation et de communication pour un ensemble de Thymio.

Exemple: des Thymios indépendants:

Dans la vidéo ci-dessous, chaque Thymio reçoit une série d’instructions : s’allumer en bleu, puis passer au rouge puis au vert et de nouveau au bleu. Chaque Thymio a une période différente : le premier change de couleur toute les 4 secondes et le deuxième toutes les 2 secondes. Les Thymios fonctionnent indépendamment, et il est facile de voir que le comportement est celui attendu: les Thymio n’interfèrent pas l’un avec l’autre.

Exemple: des Thymios sans synchronisation:

A présent, nous changeons la piste du dernier exemple pour qu’elle ait la forme d’un huit avec une intersection au centre. Le clignotement indépendant des lumières continue correctement. Cependant, comme il n’y a aucune synchronisation dans le déplacement des Thymios, ils se heurtent au niveau de l’intersection. Ce comportement est dangereux, c’est pourquoi, nous devons implémenter un mécanisme pour garantir que cela n’arrive pas.

Les projets sur la programmation concurrente:

Il existe de nombreux mécanismes, outils et algorithmes pour la synchronisation des programmes concurrents ainsi que pour la communication entre des programmes distribués. Les liens suivants vous conduiront vers des pages utilisant les Thymios pour explorer cet excitant sujet.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License