TP4 Le Pipeline |
Le pipeline est une technique employée dans les processeurs
Principe: Plusieurs threads réalisent un pipeline virtuel. Un flot de données parcourt le pipeline
On a recouvrement des calculs entre threads et recouvrement possible entre calcul et synchronisations
=> le but est d’obtenir un pipeline équilibré sans trous
exemple:
On considère qu’une tache peut être découpée en : T= S+C+D+P (sérialisation, connexion, desérialisation, persistance).
Le pipeline idéal:
Et ce que l’on peut obtenir réellement:
L'objectif de cet exercice est d'implanter un pipeline simple qui échange un entier entre étage. Chaque étage incrémente l'entier reçu et le renvoie au suivant. Chaque étage est représenté par un thread qui lit dans une Collection un élément et rend le résultat dans une autre Collection.
On considère qu'au moins ces 4 classes sont utilisées :
Quelle collection prend t-on pour implémenter la classe BlockingQueue ?
Codez les classes ci dessus. Vous devriez avoir un projet complet. Testez !
C
Ajoutez une condition d'arrêt pour stopper proprement le Pipeline
A
Au lieu de passer un entier d'étage en étage, implantez une classe Result qui permet de stocker:
B
Faites une classe Work qui possède N méthodes, une par
étage.
Les méthodes récupèrent une instance de Result font un calcul, un affichage et appellent Sleep pendant
2s. Modifiez votre projet pour que chaque méthode soit lancée par
chaque étage de votre Pipeline.
Ici, chaque méthode doit récupérer un objet Integer et doit incrémenter sa valeur.
Utilisez un TimerTask pour ajouter un nouvel élément dans le Pipeline toutes les 3 secondes