クラス
- Exception (11)
- Fiber (22)
- IO (110)
- Monitor (16)
- Mutex (6)
- Thread (169)
-
Thread
:: Mutex (36) - ThreadGroup (11)
- ThreadsWait (6)
- TracePoint (11)
モジュール
- Marshal (22)
- ObjectSpace (11)
- Process (22)
キーワード
-
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (11) - Fiber (11)
-
NEWS for Ruby 2
. 0 . 0 (11) -
NEWS for Ruby 2
. 5 . 0 (7) -
NEWS for Ruby 2
. 7 . 0 (5) -
NEWS for Ruby 3
. 0 . 0 (4) - Thread (11)
- add (11)
-
backtrace
_ locations (11) -
clock
_ gettime (11) -
count
_ tdata _ objects (11) - detach (11)
- dump (22)
- eof (11)
- eof? (11)
- exit (11)
- fetch (7)
- fork (11)
-
handle
_ interrupt (11) - join (22)
- lock (11)
-
mon
_ exit (5) - name= (9)
- new (22)
-
next
_ wait (6) -
pending
_ interrupt? (11) - pipe (88)
- raise (11)
-
rb
_ thread _ raise (11) -
rb
_ thread _ raise _ m (11) -
rb
_ thread _ signal _ raise (11) -
report
_ on _ exception (16) -
report
_ on _ exception= (16) - resume (11)
-
rinda
/ rinda (11) -
ruby 1
. 6 feature (11) -
ruby 1
. 8 . 4 feature (11) - run (11)
- sleep (11)
- start (11)
- status (11)
- synchronize (9)
- transfer (11)
- unlock (11)
- wakeup (11)
- スレッド (11)
検索結果
先頭5件
-
Thread
# raise(error _ type , message , traceback) -> () (62137.0) -
自身が表すスレッドで強制的に例外を発生させます。
...させます。
@param error_type Kernel.#raise を参照してください。
@param message Kernel.#raise を参照してください。
@param traceback Kernel.#raise を参照してください。
Thread.new {
sleep 1
Thread.main.raise "foobar"
}
begin
sleep
rescue
p... -
Thread (38118.0)
-
スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Thread を使うことで並行プログラミングが可能になります。
...スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。
Thread を使うことで並行プログラミングが可能になります。
=== 実装
ネイティブスレッドを用いて実装されていますが、......レッドを Thread#join で待っている他の
スレッドがある場合、その待っているスレッドに対して、同じ例外が再度
発生します。
begin
t = Thread.new do
Thread.pass # メインスレッドが確実にjoinするように
raise "unhandled e......ン 付きで起動した場合も同様。
(オプションの詳細に関してはspec/rubycmd を参照)
* Thread.abort_on_exception でフラグを設定する。
* Thread#abort_on_exception で指定
したスレッドのフラグを設定する。
上記3つのいずれかが設... -
Thread
. fork(*arg) {|*arg| . . . } -> Thread (21126.0) -
スレッドを生成して、ブロックの評価を開始します。 生成したスレッドを返します。
...スレッドを生成して、ブロックの評価を開始します。
生成したスレッドを返します。
基本的に Thread.new と同じですが、
new メソッドと違い initialize メソッドを呼びません。
@param arg 引数 arg はそのままブロックに渡されま......開始と同時にその
スレッド固有のローカル変数に値を渡すために使用します。
@raise ThreadError 現在のスレッドが属する ThreadGroup が freeze されている場合に発生します。またブロックを与えられずに呼ばれた場合にも......ードは間違いです。スレッドの実行が開始される前に
変数 i が書き変わる可能性があるからです。
for i in 1..5
Thread.start { p i }
end
上の例は以下のように書き直すべきです。
for i in 1..5
Thread.start(i) {|t| p t }
end... -
Thread
. handle _ interrupt(hash) { . . . } -> object (21126.0) -
スレッドの割り込みのタイミングを引数で指定した内容に変更してブロックを 実行します。
...ングを引数で指定した内容に変更してブロックを
実行します。
「割り込み」とは、非同期イベントや Thread#raise や
Thread#kill、Signal.#trap(未サポート)、メインスレッドの終了
(メインスレッドが終了すると、他のスレッドも終......れるまで延期されます。本
メソッドは sigprocmask(3) に似ています。
@return ブロックの評価結果を返します。
@raise ArgumentError ブロックを指定しなかった場合に発生します。
=== 注意
非同期割り込みの利用は難しいため、ス......してください。
=== 使い方
例:Thread#raise 発生のタイミングを制御する例
th = Thread.new do
Thread.handle_interrupt(RuntimeError => :never) {
begin
# 安全にリソースの割り当てが可能
Thread.handle_interrupt(RuntimeError => :immediate... -
Thread
. start(*arg) {|*arg| . . . } -> Thread (21126.0) -
スレッドを生成して、ブロックの評価を開始します。 生成したスレッドを返します。
...スレッドを生成して、ブロックの評価を開始します。
生成したスレッドを返します。
基本的に Thread.new と同じですが、
new メソッドと違い initialize メソッドを呼びません。
@param arg 引数 arg はそのままブロックに渡されま......開始と同時にその
スレッド固有のローカル変数に値を渡すために使用します。
@raise ThreadError 現在のスレッドが属する ThreadGroup が freeze されている場合に発生します。またブロックを与えられずに呼ばれた場合にも......ードは間違いです。スレッドの実行が開始される前に
変数 i が書き変わる可能性があるからです。
for i in 1..5
Thread.start { p i }
end
上の例は以下のように書き直すべきです。
for i in 1..5
Thread.start(i) {|t| p t }
end... -
Thread
. new(*arg) {|*arg| . . . } -> Thread (21119.0) -
スレッドを生成して、ブロックの評価を開始します。 生成したスレッドを返します。
...開始と同時にその
スレッド固有のローカル変数に値を渡すために使用します。
@raise ThreadError 現在のスレッドが属する ThreadGroup が freeze されている場合に発生します。またブロックを与えられずに呼ばれた場合にも......のコードは間違いです。スレッドの実行が開始される前に
変数 i が書き変わる可能性があるからです。
for i in 1..5
Thread.new { p i }
end
上の例は以下のように書き直すべきです。
for i in 1..5
Thread.new(i) {|t| p t }
end... -
Thread
. pending _ interrupt?(error = nil) -> bool (21084.0) -
非同期割り込みのキューが空かどうかを返します。
...します。
Thread.handle_interrupt は非同期割り込みの発生を延期させるのに使
用しますが、本メソッドは任意の非同期割り込みが存在するかどうかを確認す
るのに使用します。
本メソッドが true を返した場合、Thread.handle_interru......させられていた例外をただちに発生させる。
def Thread.kick_interrupt_immediately
Thread.handle_interrupt(Object => :immediate) {
Thread.pass
}
end
=== 使い方
th = Thread.new{
Thread.handle_interrupt(RuntimeError => :on_blocking){
while true......if Thread.pending_interrupt?
Thread.handle_interrupt(Object => :immediate){}
end
...
end
}
}
...
th.raise # スレッド停止。
この例は以下のように記述する事もできます。
flag = true
th = Thread.new{
Thread.handle_in... -
Thread
# status -> String | false | nil (21072.0) -
生きているスレッドの状態を文字列 "run"、"sleep", "aborting" のいず れかで返します。正常終了したスレッドに対して false、例外によ り終了したスレッドに対して nil を返します。
...て nil を返します。
Thread#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
b.status #=> "sleep"
c.status #=> false
d.status #=> "aborting"
Thread.current.status #=> "run"
@see Thread#alive?, Thread#stop?... -
Thread
# report _ on _ exception -> bool (21066.0) -
真の場合、そのスレッドが例外によって終了した時に、その内容を $stderr に報告します。
...はスレッド作成時の Thread.report_on_exception です。
@param newstate スレッド実行中に例外発生した場合、その内容を報告するかどうかを true か false で指定します。
//emlist[例][ruby]{
a = Thread.new{ Thread.stop; raise }
a.report_on_exception = true.......run
# => #<Thread:0x00007fc3f48c7908@(irb):1 run> terminated with exception (report_on_exception is true):
# Traceback (most recent call last):
# (irb):1:in `block in irb_binding': unhandled exception
# #<Thread:0x00007fc3f48c7908@(irb):1 dead>
b = Thread.new{ Thread.stop; raise }
b.report......_on_exception = false
b.run # => #<Thread:0x00007fc3f48aefc0@(irb):4 dead>
//}
@see Thread.report_on_exception... -
Thread
# report _ on _ exception=(newstate) (21066.0) -
真の場合、そのスレッドが例外によって終了した時に、その内容を $stderr に報告します。
...はスレッド作成時の Thread.report_on_exception です。
@param newstate スレッド実行中に例外発生した場合、その内容を報告するかどうかを true か false で指定します。
//emlist[例][ruby]{
a = Thread.new{ Thread.stop; raise }
a.report_on_exception = true.......run
# => #<Thread:0x00007fc3f48c7908@(irb):1 run> terminated with exception (report_on_exception is true):
# Traceback (most recent call last):
# (irb):1:in `block in irb_binding': unhandled exception
# #<Thread:0x00007fc3f48c7908@(irb):1 dead>
b = Thread.new{ Thread.stop; raise }
b.report......_on_exception = false
b.run # => #<Thread:0x00007fc3f48aefc0@(irb):4 dead>
//}
@see Thread.report_on_exception...