Pour chaque exercice, vous donnerez une solution en C (pthread) et en Java.
Voir les exemples donnés en cours: exemple.c et Exemple.java. Compiler le C avec l'option « -pthread ».

Création de threads

Écrire un programme qui lance 3 threads, sans aucun synchronisation. Chaque thread affiche un message (le même pour tous).

Gestion des terminaisons

  • Le créateur des threads précédent peut-il se terminer avant ses fils ?
  • Complétez le programme pour qu'un message apparaisse lorsque les 3 threads sont terminés.

Passage de paramètres

Modifier le programme pour que le message affiché soit différent pour chaque thread. La partie  variable du message devra être passée  en paramètre à la création du thread.

Calcul parallèle

Écrire un programme qui calcule la somme des éléments d'un tableau en utilisant N threads.
Le principe est le suivant : chaque thread calcule la somme sur une partie du tableau, puis les sommes partielles sont additionnées par le thread principal pour obtenir le résultat final.

Accès concurrents

Le but de cet exercice est de mettre en évidence les problèmes d'accès concurrents aux données. On ne cherchera pas ici à résoudre ces problèmes.

Écrire un programme avec :

  • une variable entière v initialisée à 0
  • 5 threads qui :
    • reçoivent en paramètre (indice: penser à une structure) :
      • p : l'adresse de v
      • n : un nombre d'itérations
      • i : une valeur entière
    • n fois, ajoutent la valeur i à l'entier pointé par p
  • lorsque les 5 threads sont terminés, affiche la valeur de v

Observer.