Programmation Concurrente (2016)

ServeurMultiThreadv3

Voir le sujet précédent Voir le sujet suivant Aller en bas

ServeurMultiThreadv3

Message par ren12 le Ven Oct 14, 2016 12:22 pm

Bonjour,

Je voudrais revenir sur cette partie du code de la methode run() du client :

Code:

f.put(r);
this.trace("j'attends le serveur");

//COMMUTATION
synchronized (reveil) {
   reveil.wait();
         
}

Le client attend que le servant le réveil. Mais si une commutation intervient la ou je l'ai précisé dans le code, et que le servant réveil le client avant que le client ne se soit endormi, le client ne se réveillera jamais non ? et par conséquent, le serveur ne se terminera jamais. Pourrait-on mettre dans le client un boolean requeteTraite à false, et qui sera mis à true (action synchronisé sur reveil) seulement si la requete par le servant s'est terminé ? Ainsi on s'assurerai de s'endormir seulement si requeteTraite vaut false.

Merci

ren12

Posts : 7
Join date : 11/10/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: ServeurMultiThreadv3

Message par Admin le Sam Oct 15, 2016 7:23 pm

Bonjour,

J'ai en effet testé en mettant un "sleep(10000) avant de faire le wait() dans le client et en effet, il y a un souci. Mon programme fonctionne avec une hypothèse importante, c'est que le client s'endorme immédiatement après avoir contacté le serveur... dans les exécutions que j'ai faites, j'ai des cas de commutation mais le client reprends à temps en général car la création des servants (surtout via un pool) prends du temps.

Bravo à vous d'avoir su constater cette exécution atypique.


Dernière édition par Admin le Sam Oct 15, 2016 7:45 pm, édité 1 fois

Admin
Admin

Posts : 47
Join date : 24/08/2016

Voir le profil de l'utilisateur http://3i001-2016.forumactif.org

Revenir en haut Aller en bas

Re: ServeurMultiThreadv3

Message par Admin le Sam Oct 15, 2016 7:30 pm

Oups, je réalise que je n'ai pas répondu concernant votre solution. Pour être franc je la trouve un peu moche ;-). cela dit, comme les servants n'accèdent qu'à un seul client, cela fonctionne très bien.

On verra quelque chose de plus élégant avec un autre type de synchronisation sur une attente de résultat plus loin dans le cours (que l'on peut considérer comme plus élégante).

Admin
Admin

Posts : 47
Join date : 24/08/2016

Voir le profil de l'utilisateur http://3i001-2016.forumactif.org

Revenir en haut Aller en bas

Re: ServeurMultiThreadv3

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum