種類
ライブラリ
クラス
- Exception (11)
-
IRB
:: Context (11) - Monitor (37)
-
Rake
:: Application (11) - Thread (93)
-
Thread
:: Backtrace :: Location (77) -
Thread
:: ConditionVariable (44) -
Thread
:: Mutex (9) -
Thread
:: Queue (33) -
Thread
:: SizedQueue (53) - ThreadsWait (6)
モジュール
- Etc (176)
- Kernel (55)
- MonitorMixin (11)
- Process (11)
- Timeout (19)
キーワード
-
$ -d (11) -
$ DEBUG (11) -
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (11) -
CS
_ GNU _ LIBPTHREAD _ VERSION (11) -
CS
_ POSIX _ V7 _ THREADS _ CFLAGS (11) -
CS
_ POSIX _ V7 _ THREADS _ LDFLAGS (11) - ConditionVariable (11)
- MonitorMixin (11)
-
NEWS for Ruby 2
. 0 . 0 (11) -
NEWS for Ruby 2
. 4 . 0 (8) -
NEWS for Ruby 2
. 5 . 0 (7) -
NEWS for Ruby 2
. 7 . 0 (5) -
NEWS for Ruby 3
. 0 . 0 (4) -
NEWS for Ruby 3
. 1 . 0 (3) -
SC
_ 2 _ VERSION (11) -
SC
_ ASYNCHRONOUS _ IO (11) -
SC
_ CLOCK _ SELECTION (11) -
SC
_ JOB _ CONTROL (11) -
SC
_ MEMORY _ PROTECTION (11) -
SC
_ MONOTONIC _ CLOCK (11) -
SC
_ NPROCESSORS _ CONF (11) -
SC
_ NPROCESSORS _ ONLN (11) -
SC
_ SYNCHRONIZED _ IO (11) -
SC
_ THREAD _ DESTRUCTOR _ ITERATIONS (11) -
SC
_ THREAD _ SAFE _ FUNCTIONS (11) -
SC
_ VERSION (11) -
SC
_ XOPEN _ VERSION (11) -
abort
_ on _ exception (22) -
absolute
_ path (11) -
backtrace
_ locations (33) -
base
_ label (11) - broadcast (11)
-
caller
_ locations (22) -
clock
_ gettime (11) - debug (11)
- deq (22)
- enq (10)
- enter (11)
- exit (11)
-
handle
_ interrupt (11) -
ignore
_ deadlock (3) - inspect (11)
- irb (11)
- label (11)
- lineno (11)
-
mon
_ enter (16) -
mon
_ exit (5) - monitor (11)
- new (11)
-
next
_ wait (6) - path (11)
-
pending
_ interrupt? (11) - pop (22)
- push (10)
-
report
_ on _ exception (16) -
report
_ on _ exception= (8) -
ruby 1
. 6 feature (11) -
ruby 1
. 8 . 3 feature (11) -
ruby 1
. 8 . 4 feature (11) - shift (22)
- signal (11)
- synchronize (9)
- thread (11)
- timeout (30)
-
to
_ s (11) - wait (11)
-
wait
_ for _ cond (5) - スレッド (11)
検索結果
先頭5件
-
Thread (38130.0)
-
スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Thread を使うことで並行プログラミングが可能になります。
...スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。
Thread を使うことで並行プログラミングが可能になります。
=== 実装
ネイティブスレッドを用いて実装されていますが、......レッドの実行も終
了します。ブロックの終了は正常な終了も例外などによる異常終了も含みます。
===[a:exception] 例外発生時のスレッドの振る舞い
あるスレッドで例外が発生し、そのスレッド内で rescue で捕捉されなかっ......モード)
ruby インタプリタを -d オプション 付きで起動した場合も同様。
(オプションの詳細に関してはspec/rubycmd を参照)
* Thread.abort_on_exception でフラグを設定する。
* Thread#abort_on_exception で指定
したスレッドのフ... -
Thread
# report _ on _ exception -> bool (33392.0) -
真の場合、そのスレッドが例外によって終了した時に、その内容を $stderr に報告します。
...の Thread.report_on_exception です。
@param newstate スレッド実行中に例外発生した場合、その内容を報告するかどうかを true か false で指定します。
//emlist[例][ruby]{
a = Thread.new{ Thread.stop; raise }
a.report_on_exception = true
a.report_on_exception......=> #<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_exc......eption = false
b.run # => #<Thread:0x00007fc3f48aefc0@(irb):4 dead>
//}
@see Thread.report_on_exception... -
Thread
# abort _ on _ exception -> bool (33372.0) -
真の場合、そのスレッドが例外によって終了した時に、インタプリタ 全体を中断させます。false の場合、あるスレッドで起こった例 外は、Thread#join などで検出されない限りそのスレッ ドだけをなにも警告を出さずに終了させます。
...alse の場合、あるスレッドで起こった例
外は、Thread#join などで検出されない限りそのスレッ
ドだけをなにも警告を出さずに終了させます。
デフォルトは偽です。c:Thread#exceptionを参照してください。
@param newstate 自身を実行......中に例外発生した場合、インタプリタ全体を終了させるかどうかを true か false で指定します。
//emlist[例][ruby]{
thread = Thread.new { sleep 1 }
thread.abort_on_exception # => false
thread.abort_on_exception = true
thread.abort_on_exception # => true
//}... -
Thread
. report _ on _ exception -> bool (33368.0) -
真の時は、いずれかのスレッドが例外によって終了した時に、その内容を $stderr に報告します。
...は false です。
Thread.new { 1.times { raise } }
は $stderr に以下のように出力します:
#<Thread:...> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
2: from -e:1:in `block in <main>'
1: from -e:1:in `times'
こ......終了しないようにするのがより良い方法です。
* Thread#join や Thread#value でそのスレッドの終了を待つことが保証できるなら、
スレッド開始時に Thread.current.report_on_exception = false でレポートを無効化しても
安全です。し......れていて
終了を待つことができなかったりするかもしれません。
スレッドごとに設定する方法は Thread#report_on_exception= を参照してください。
@param newstate スレッド実行中に例外発生した場合、その内容を報告するかどう......は true です。
Thread.new { 1.times { raise } }
は $stderr に以下のように出力します:
#<Thread:...> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
2: from -e:1:in `block in <main>'
1: from -e:1:in `times'
こ... -
Thread
. abort _ on _ exception -> bool (33360.0) -
真の時は、いずれかのスレッドが例外によって終了した時に、インタプリタ 全体を中断させます。false の場合、あるスレッドで起こった例外は、Thread#join などで検出されない限りそのスレッドだけをなにも警告を出さずに終了させます。
...lse の場合、あるスレッドで起こった例外は、Thread#join
などで検出されない限りそのスレッドだけをなにも警告を出さずに終了させます。
デフォルトは false です。
c:Thread#exceptionを参照してください。
@param newstate スレッド......実行中に例外発生した場合、インタプリタ全体を終了させるかどうかを true か false で指定します。
//emlist[例][ruby]{
Thread.abort_on_exception # => false
Thread.abort_on_exception = true
Thread.abort_on_exception # => true
//}... -
Thread
. report _ on _ exception=(newstate) (33268.0) -
真の時は、いずれかのスレッドが例外によって終了した時に、その内容を $stderr に報告します。
...は false です。
Thread.new { 1.times { raise } }
は $stderr に以下のように出力します:
#<Thread:...> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
2: from -e:1:in `block in <main>'
1: from -e:1:in `times'
こ......終了しないようにするのがより良い方法です。
* Thread#join や Thread#value でそのスレッドの終了を待つことが保証できるなら、
スレッド開始時に Thread.current.report_on_exception = false でレポートを無効化しても
安全です。し......れていて
終了を待つことができなかったりするかもしれません。
スレッドごとに設定する方法は Thread#report_on_exception= を参照してください。
@param newstate スレッド実行中に例外発生した場合、その内容を報告するかどう......は true です。
Thread.new { 1.times { raise } }
は $stderr に以下のように出力します:
#<Thread:...> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
2: from -e:1:in `block in <main>'
1: from -e:1:in `times'
こ... -
Thread
# backtrace _ locations(range) -> [Thread :: Backtrace :: Location] | nil (27448.0) -
スレッドの現在のバックトレースを Thread::Backtrace::Location の配 列で返します。
...スレッドの現在のバックトレースを Thread::Backtrace::Location の配
列で返します。
引数で指定した値が範囲外の場合、スレッドがすでに終了している場合は nil
を返します。
@param start 開始フレームの位置を数値で指定します......er_locations と似ていますが、本メソッドは self に限定
した情報を返します。
//emlist[例][ruby]{
thread = Thread.new { sleep 1 }
thread.run
thread.backtrace_locations # => ["/path/to/test.rb:1:in `sleep'", "/path/to/test.rb:1:in `block in <main>'"]
//}
@see Thread::Backtr......ace::Location... -
Thread
# backtrace _ locations(start = 0 , length = nil) -> [Thread :: Backtrace :: Location] | nil (27448.0) -
スレッドの現在のバックトレースを Thread::Backtrace::Location の配 列で返します。
...スレッドの現在のバックトレースを Thread::Backtrace::Location の配
列で返します。
引数で指定した値が範囲外の場合、スレッドがすでに終了している場合は nil
を返します。
@param start 開始フレームの位置を数値で指定します......er_locations と似ていますが、本メソッドは self に限定
した情報を返します。
//emlist[例][ruby]{
thread = Thread.new { sleep 1 }
thread.run
thread.backtrace_locations # => ["/path/to/test.rb:1:in `sleep'", "/path/to/test.rb:1:in `block in <main>'"]
//}
@see Thread::Backtr......ace::Location... -
Thread
. handle _ interrupt(hash) { . . . } -> object (21208.0) -
スレッドの割り込みのタイミングを引数で指定した内容に変更してブロックを 実行します。
...ングを引数で指定した内容に変更してブロックを
実行します。
「割り込み」とは、非同期イベントや Thread#raise や
Thread#kill、Signal.#trap(未サポート)、メインスレッドの終了
(メインスレッドが終了すると、他のスレッドも終......l が値の Hash を指定します。
値の内容は以下のいずれかです。
: :immediate
すぐに割り込みます。
: :on_blocking
ブロッキング処理(後述)の間は割り込みが発生します。
: :never
まったく割り込みません。
「ブロ......してください。
=== 使い方
例:Thread#raise 発生のタイミングを制御する例
th = Thread.new do
Thread.handle_interrupt(RuntimeError => :never) {
begin
# 安全にリソースの割り当てが可能
Thread.handle_interrupt(RuntimeError => :immediate... -
Thread
. pending _ interrupt?(error = nil) -> bool (21190.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...