EDIT : j’avais écrit un article plus long sur mon appli wordpress mais cet imbécile n’a gardé que le premier paragraphe! Je mettrais à jour dès que j’en aurais le temps!

EDIT BIS : article mis à jour avec ce que j’avais écrit, et avec du code en prime!

Ce soir je blog depuis l’iphone parce que je n’ai pas internet (je ne sais pas si on peut considérer ça comme un luxe ou une misère). Quoiqu’il en soit, j’ai fait mes 29 minutes (même plus) de lecture de Ruby aujourd’hui. Je vous vois déjà douter de mon honnêteté! Alors pour les suspicieux, voici la leçon du jour.

On peut obtenir des informations sur les Threads, qu’ils soient en cours ou arrêtés.

  • Thread.current renvoie le Thread actuellement actif (l’output ressemble à #<Thread:0x284c748>)
  • Thread.list est identique à Thread.current mais renvoie toute la liste des Thread actifs ou disponibles (c’est à dire arrêtés mais qu’on peut relancer, je crois…). J’ai remarqué qu’un même objet Thread a un output différent à chaque fois que l’on passe dedans.
  • .alive? (à appeler sur une instance, et non sur la classe Thread) affiche true si le thread est actif ou en pause, false si il est arrêté
  • .status affiche run si le thread est actif, sleep si il est en pause, aborting s’il est en train de s’arrêter, nil s’il s’est arrêté avec une erreur et false s’il s’est arrêté normalement

Petit exemple pour la méthode .status :

mon_timeout = Thread.new() do
while(true):
puts "Je passe par ici."
sleep 1
puts mon_timeout.status
end
end
mon_timeout.join(1)
 
mon_thread = Thread.new() do
  puts "Je passe par là."
end
Thread.kill(mon_thread)
puts mon_thread.status
→ Je passe par ici.
run
Je passe par ici.
Je passe par là.
false

Le “run” correpond au statut de mon_timeout, et le “false” corresponds à mon_thread après qu’il ait été arrêté.