3 votes

Quelle est la différence entre thread.exit et thread.pass en ruby ?

Je suis en train d'apprendre ruby et ses concepts. Je lis un article sur "threads in ruby" dans lequel il est impossible de distinguer thread.pass et thread.exit. L'article contient les définitions de ces deux méthodes comme : Le Thread.pass invoque le planificateur de threads pour transférer l'exécution à un autre thread. La méthode Thread.exit met fin au thread en cours d'exécution et planifie l'exécution d'un autre thread.

Mais je suis confus lorsque j'utilise ces méthodes. Pouvez-vous, s'il vous plaît, m'aider à résoudre ce problème. Je vous remercie.

4voto

moritz Points 9491

Thread.pass permet à d'autres threads d'être exécutés, mais le planificateur finira par lui redonner l'exécution. Thread.exit met fin au thread (et indique par conséquent au planificateur de passer l'exécution à un autre thread). J'espère que cela vous aidera. Si ce n'est pas le cas, veuillez inclure le code qui provoque la confusion.

t1 = Thread.new do
  10.times do |i|
    if i < 5
      puts i
      sleep 0.1
      Thread.pass
    else
      Thread.exit
    end
  end
end

sleep 0.05

t2 = Thread.new do
  10.times do |i|
    puts i
    sleep 0.1
  end
end

t1.join
t2.join

ce qui donne le résultat suivant :

0
0
1
1
2
2
3
3
4
4
5
6
7
8
9

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X