Exercice 1

Écrivez un programme qui crée n threads, n étant passé en argument au programme. Chaque thread affichera simplement son indice de création après une attente aléatoire entre 1 et 5 secondes. Le main effectuera un sleep de quelque secondes avant de se terminer avec l’instruction return EXIT_SUCCESS. Que se passe t-il si on n’utilise pas l’instruction sleep.

Exercice 2

Modifiez le programme précédent pour qu’il affiche un message Bye lorsque tous les thread se sont terminés.

Exercice 3

Ajouter une variable globbe compteur initialisée à 0 et modifiez la fonction exécutée par chaque thread en ajoutant le code suivant :

for (int i = 0; i <100000; i++)
   compteur++;

Affichez la valeur de la variable compteur à la fin du main. Lancez votre programme plusieurs fois. Que constatez-vous? Modifiez votre programme pour remedier au problème.