3

私はルビーとその概念を学んでいます。thread.passとthread.exitを区別できない「threadsinruby」に関する記事を読んでいます。この記事には、次の2つのメソッドの定義が含まれています。Thread.passメソッドは、スレッドスケジューラを呼び出して、実行を別のスレッドに渡します。Thread.exitメソッドは、現在実行のスレッドを終了し、別のスレッドの実行をスケジュールします。

しかし、これらの方法を使用している間、私は混乱しています。整理するのを手伝ってくれませんか。ありがとう

4

1 に答える 1

3

Thread.passは、実行される他のスレッドに道を譲りますが、最終的に、スケジューラーは実行をスレッドに戻します。Thread.exitはスレッドを終了します(その結果、スケジューラーに実行を別のスレッドに渡すように指示します)。これがお役に立てば幸いです。そうでない場合は、混乱を引き起こすコードを含めてください。

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

これにより、次の出力が得られます。

0
0
1
1
2
2
3
3
4
4
5
6
7
8
9
于 2012-07-06T07:55:08.917 に答える