[Ruby]Problème de Thread + Retry

Problème de Thread + Retry [Ruby] - Ruby/Rails - Programmation

Marsh Posté le 07-09-2006 à 16:26:16    

Bonjour, depuis quelques jours j'ai commancé à apprendre le Ruby, et en testant quelques trucs je suis tombé sur un cas que j'arrive pas à comprendre.
 
Voila mon code (Je m'excuse si c'est "sale", corrigez moi si c'est le cas :) )

Code :
  1. threads = []
  2. threads[0] = Thread.new('Compteur'){(0..10000).each{|i| Thread.current['i'] = i;puts "Je compte et je suis a :#{i}" if i%1000 == 0}}
  3. threads[1] = Thread.new('Decompteur') do
  4.     10000.downto(0)do|i|
  5.         Thread.current['i'] = i
  6.         puts "Je decompte et je suis a : #{i}" if i%1000 == 0
  7.     end
  8. end
  9. threads[3] = Thread.new('Controleur') do
  10.     i0 = threads[0]['i']
  11.     i1 = threads[1]['i']
  12.     if (i0 - i1).abs < 1000
  13.        raise "Thread 0 a #{threads[0]['i']} et Thread 1 a #{threads[1]['i']}"
  14.     end
  15. end
  16. try = false
  17. begin
  18.     threads[3].join
  19.     threads[0].join
  20.     threads[1].join
  21. rescue RuntimeError => e
  22.     if(!try)
  23.         puts "Exception  #{e.message}"
  24.         try = true
  25.         sleep 1
  26.         retry
  27.     else
  28.         puts "Re-exception "+e.message
  29.     end
  30. ensure
  31.     puts "Fini"
  32. end


Et voila l'output  

Citation :


Je compte et je suis a :0
Je compte et je suis a :1000
Je compte et je suis a :2000
Je compte et je suis a :3000
Je compte et je suis a :4000
Je compte et je suis a :5000
Je decompte et je suis a : 10000
Je decompte et je suis a : 9000
Je decompte et je suis a : 8000
Je decompte et je suis a : 7000
Je compte et je suis a :6000
Je compte et je suis a :7000
Je decompte et je suis a : 6000
Je decompte et je suis a : 5000
Exception  Thread 0 a 7085 et Thread 1 a 6417
Je compte et je suis a :8000
Je compte et je suis a :9000
Je decompte et je suis a : 4000
Je decompte et je suis a : 3000
Je decompte et je suis a : 2000
Je decompte et je suis a : 1000
Je compte et je suis a :10000
Je decompte et je suis a : 0
Re-exception Thread 0 a 7085 et Thread 1 a 6417
Fini


 
Ma question est la suivante : Pourquoi la re-exception est lancée avec le meme message d'erreur que la 1ere et ceci bienque les autres threads continuent leur route dans problemes?
 
Merci bien


Message édité par esox_ch le 21-08-2007 à 22:53:07

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-09-2006 à 16:26:16   

Reply

Marsh Posté le 07-09-2006 à 23:43:21    

Personne ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 08-09-2006 à 00:47:08    

y a comme un modo qui a viré masklinn :o
 

Spoiler :

ben ouais quoi j avais envie de troller avant de me coucher ca detend :sweat:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed