Loading s7crs_l12_parallelism...

enib_small.png S7-CRS L12_Parallelism — Notions élémentaires de parallélisme

Les fichiers servant de support à cette expérimentation seront obtenus par la commande $ cp -r /home/TP/sujets/CRS_L12_Parallelism . depuis les salles de Labo de l'ENIB, ou par la commande $ sftp -P 55555 -r votre_identifiant@sftp.enib.fr:/home/TP/sujets/CRS_L12_Parallelism . depuis l'extérieur de l'ENIB.

Il s'agit d'une série d'exercices en rapport avec l'utilisation de threads pour exploiter les multiples unités de calcul des machines informatiques.
Au cours de cette séance nous nous familiariserons avec l'usage des threads et de leurs moyens de synchronisation.

Chaque programme est volontairement très simple afin de se focaliser sur la découverte des services proposés sans être distrait par les détails annexes d'une quelconque application particulière.
Il convient de traiter ces exercices tranquillement, en s'interrogeant à chaque fois sur le propos de la fonctionnalité particulière qui est mise en avant.
Il ne sert strictement à rien d'enchaîner les exercices sans les comprendre en se contentant de “ça compile et ça ne plante pas donc j'ai bon, je passe à la suite...”

La consultation de la documentation est très importante et fait partie intégrante du travail.
Pour ceci vous disposez des pages de manuel indiquées à chaque exercice ainsi que de ces documents de programmation système.
En particulier, le document Threads.pdf contient notamment des informations sur l'API Posix (en langage C) des threads et les ressources en lignes suivantes :
apporteront tous les détails de mise en œuvre en C++.
Le fichier d'en-tête crsUtils.hpp doit également être consulté très régulièrement puisqu'il fournit, au delà de quelques fonctionnalités utilitaires, la mise à disposition dans une forme facilitée pour les étudiants (limitation des pointeurs, des conversions de types, utilisation de chaînes et vecteurs C++, contrôle des échecs...) des appels et fonctionnalités systèmes que nous utiliserons.

Vous êtes censés savoir refaire et réutiliser tous ces exercices lors des séances ultérieures ; n'hésitez donc pas à poser des questions lors de cette séance et à les refaire tout seul ensuite pour vous entraîner.
{1 #launch } Lancer/attendre un thread
{2 #multi } Utiliser de multiples threads
{3 #synchro } Synchronisation des threads
{4 #condvar } Synchronisation par variable condition

Nous venons de découvrir les rudiments de la mise en œuvre des threads et des moyens les plus classiques pour assurer leur synchronisation.
L'objectif prioritaire de cette séance était de mettre en évidence quelques écueils de la programmation multi-threads qui risquent d'induire une exécution incorrecte du programme et de présenter les outils disponibles pour s'en prémunir.
La question de l'efficacité de tels traitements parallèles n'a pas encore été abordée et fera l'objet d'un futur sujet.