るりまサーチ

最速Rubyリファレンスマニュアル検索!
99件ヒット [1-99件を表示] (0.073秒)

別のキーワード

  1. _builtin new
  2. _builtin inspect
  3. _builtin []
  4. _builtin to_s
  5. _builtin each

ライブラリ

クラス

キーワード

検索結果

Thread.kill(thread) -> Thread (26113.0)

指定したスレッド thread に対して Thread#exit を呼びます。終了したスレッドを返します。

...指定したスレッド thread に対して Thread#exit を呼びます。終了したスレッドを返します。

@param thread 終了したい Thread オブジェクトを指定します。

th = Thread.new do
end

p Thread.kill(th) #=> #<Thread:0x40221bc8 dead>...

Thread#kill -> self (23113.0)

スレッドの実行を終了させます。終了時に ensure 節が実行されます。

...it(0)
により終了します。

Kernel.#exit と違い例外 SystemExit を発生しません。

th1 = Thread.new do
begin
sleep 10
ensure
p "this will be displayed"
end
end

sleep 0.1
th1.kill

#=> "this will be displayed"

@see Kernel.#exit, Kernel.#exit!...

Thread (8030.0)

スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Thread を使うことで並行プログラミングが可能になります。

...
スレッドがある場合、その待っているスレッドに対して、同じ例外が再度
発生します。

begin
t = Thread.new do
Thread.pass # メインスレッドが確実にjoinするように
raise "unhandled exception"
end
t.join
rescue
p $!...
...は ensure 節が実行されます。
これはスレッドが正常に終了する時はもちろんですが、他のスレッドから Thread#kill
などによって終了させられた時も同様に実行されます。

メインスレッドの終了時の詳細に関しては spec/terminate...
...以下の実行状態を持ちます。これらの状態は
Object#inspect や
Thread#status によって見ることができます。

p Thread.new {sleep 1} # => #<Thread:0xa039de0 sleep>

: run (実行or実行可能状態)
生成されたばかりのスレッドや Thread#run や
Thread#wake...

Thread#status -> String | false | nil (8030.0)

生きているスレッドの状態を文字列 "run"、"sleep", "aborting" のいず れかで返します。正常終了したスレッドに対して false、例外によ り終了したスレッドに対して nil を返します。

...ad#alive? が真を返すなら、このメソッドも真です。

例:
a = Thread.new { raise("die now") }
b = Thread.new { Thread.stop }
c = Thread.new { Thread.exit }
d = Thread.new { sleep }
d.kill #=> #<Thread:0x401b3678 aborting>
a.status #=> nil...

Thread#value -> object (8024.0)

スレッド self が終了するまで待ち(Thread#join と同じ)、 そのスレッドのブロックが返した値を返します。スレッド実行中に例外が 発生した場合には、その例外を再発生させます。

...ドが Thread#kill によって終了した場合は、返り値は不定です。

以下は、生成したすべてのスレッドの終了を待ち結果を出力する例です。

threads = []
threads.push(Thread.new { n = rand(5); sleep n; n })
threads.push(Thread.new { n = rand(5); s...
...leep n; n })
threads.push(Thread.new { n = rand(5); sleep n; n })

threads.each {|t| p t.value}

最後の行で、待ち合わせを行っていることがわかりにくいと思うなら以下
のように書くこともできます。

threads.each {|t| p t.join.value}...

絞り込み条件を変える

Thread#backtrace -> [String] | nil (8018.0)

スレッドの現在のバックトレースを返します。

...def m1
sleep 5
end
def m2
m1
end
end

th = Thread.new {C1.new.m2; Thread.stop}
th.backtrace
# => [
# [0] "(irb):3:in `sleep'",
# [1] "(irb):3:in `m1'",
# [2] "(irb):6:in `m2'",
# [3] "(irb):10:in `block in irb_binding'"
# ]

th.kill
th.backtrace # => nil
//}...

Thread#exit -> self (8013.0)

スレッドの実行を終了させます。終了時に ensure 節が実行されます。

...it(0)
により終了します。

Kernel.#exit と違い例外 SystemExit を発生しません。

th1 = Thread.new do
begin
sleep 10
ensure
p "this will be displayed"
end
end

sleep 0.1
th1.kill

#=> "this will be displayed"

@see Kernel.#exit, Kernel.#exit!...

Thread#terminate -> self (8013.0)

スレッドの実行を終了させます。終了時に ensure 節が実行されます。

...it(0)
により終了します。

Kernel.#exit と違い例外 SystemExit を発生しません。

th1 = Thread.new do
begin
sleep 10
ensure
p "this will be displayed"
end
end

sleep 0.1
th1.kill

#=> "this will be displayed"

@see Kernel.#exit, Kernel.#exit!...

Thread.handle_interrupt(hash) { ... } -> object (8012.0)

スレッドの割り込みのタイミングを引数で指定した内容に変更してブロックを 実行します。

...で指定した内容に変更してブロックを
実行します。

「割り込み」とは、非同期イベントや Thread#raise や
Thread#kill、Signal.#trap(未サポート)、メインスレッドの終了
(メインスレッドが終了すると、他のスレッドも終了されます...
...ドをよく理解してから利用してください。

=== 使い方

例:Thread#raise 発生のタイミングを制御する例

th = Thread.new do
Thread.handle_interrupt(RuntimeError => :never) {
begin
# 安全にリソースの割り当てが可能
Thread.handle_...