るりまサーチ

最速Rubyリファレンスマニュアル検索!
516件ヒット [1-100件を表示] (0.036秒)
トップページ > クエリ:@[x] > クラス:Thread[x]

ライブラリ

キーワード

検索結果

<< 1 2 3 ... > >>

Thread#backtrace_locations(range) -> [Thread::Backtrace::Location] | nil (25.0)

スレッドの現在のバックトレースを Thread::Backtrace::Location の配 列で返します。

...ックトレースを Thread::Backtrace::Location の配
列で返します。

引数で指定した値が範囲外の場合、スレッドがすでに終了している場合は nil
を返します。

@
param start 開始フレームの位置を数値で指定します。

@
param length 取得す...
...

@
param range 取得したいフレームの範囲を示す Range オブジェクトを指定します。

Kernel.#caller_locations と似ていますが、本メソッドは self に限定
した情報を返します。

//emlist[例][ruby]{
thread
= Thread.new { sleep 1 }
thread
.run
thread
.bac...
...ktrace_locations # => ["/path/to/test.rb:1:in `sleep'", "/path/to/test.rb:1:in `block in <main>'"]
//}

@
see Thread::Backtrace::Location...

Thread#backtrace_locations(start = 0, length = nil) -> [Thread::Backtrace::Location] | nil (25.0)

スレッドの現在のバックトレースを Thread::Backtrace::Location の配 列で返します。

...ックトレースを Thread::Backtrace::Location の配
列で返します。

引数で指定した値が範囲外の場合、スレッドがすでに終了している場合は nil
を返します。

@
param start 開始フレームの位置を数値で指定します。

@
param length 取得す...
...

@
param range 取得したいフレームの範囲を示す Range オブジェクトを指定します。

Kernel.#caller_locations と似ていますが、本メソッドは self に限定
した情報を返します。

//emlist[例][ruby]{
thread
= Thread.new { sleep 1 }
thread
.run
thread
.bac...
...ktrace_locations # => ["/path/to/test.rb:1:in `sleep'", "/path/to/test.rb:1:in `block in <main>'"]
//}

@
see Thread::Backtrace::Location...

Thread#fetch(name, default = nil) {|name| ... } -> object (25.0)

name に関連づけられたスレッドに固有のデータを返します。 name に対応するスレッド固有データがない時には、引数 default が 与えられていればその値を、ブロックが与えられていれば そのブロックを評価した値を返します。

...ブロックを評価した値を返します。

@
param name スレッド固有データのキーを文字列か Symbol で指定します。
@
param default name に対応するスレッド固有データがない時の返り値を指定します。
@
raise KeyError 引数defaultもブロックも...
...と発生します。

//emlist[例][ruby]{
th = Thread.new { Thread.current[:name] = 'A' }
th.join
th.fetch(:name) # => "A"
th.fetch(:fetch, 'B') # => "B"
th.fetch('name') {|name| "Thread" + name} # => "A"
th.fetch('fetch') {|name| "Thread" + name} # => "Threadfetch"
//}

@
see Thread#[]...

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

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

...割り込み」とは、非同期イベントや Thread#raise や
Thread
#kill、Signal.#trap(未サポート)、メインスレッドの終了
(メインスレッドが終了すると、他のスレッドも終了されます)を意味します。

@
param hash 例外クラスがキー、割り込み...
...り込みは再度有効にされるまで延期されます。本
メソッドは sigprocmask(3) に似ています。

@
return ブロックの評価結果を返します。

@
raise ArgumentError ブロックを指定しなかった場合に発生します。

=== 注意

非同期割り込みの...
...してください。

=== 使い方

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

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

Thread#[]=(name,val) (19.0)

val を name に対応するスレッド固有のデータとして格納します。

...レッド固有のデータとして格納します。

@
param name スレッド固有データのキーを文字列か Symbol で指定します。文字列を指定した場合は String#to_sym によりシンボルに変換されます。

@
param val スレッド固有データを指定します...
...。nil を指定するとそのスレッド固有データは削除されます。


@
see Thread#[]...

絞り込み条件を変える

Thread#name=(name) -> String (19.0)

self の名前を name に設定します。

...ームによっては pthread やカーネルにも設定を行う場合があります。

@
raise ArgumentError 引数に ASCII 互換ではないエンコーディングのものを
指定した場合に発生します。

//emlist[例][ruby]{
a = Thread.new{}
a.name = 'named'...
...a.name # => "named"
a.inspect # => "#<Thread:0x00007f85ac8721f0@named@(irb):1 dead>"
//}

@
see Thread#name...

Thread#raise(error_type, message, traceback) -> () (19.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 $!, $@
en...

Thread#[](name) -> object | nil (13.0)

name に対応したスレッドに固有のデータを取り出します。 name に対応するスレッド固有データがなければ nil を返し ます。

...ければ nil を返し
ます。

@
param name スレッド固有データのキーを文字列か Symbol で指定します。

//emlist[例][ruby]{
[
Thread
.new { Thread.current["name"] = "A" },
Thread
.new { Thread.current[:name] = "B" },
Thread
.new { Thread.current["name"] = "C" }
].each d...
...o |th|
th.join
puts "#{th.inspect}: #{th[:name]}"
end

# => #<Thread:0x00000002a54220 dead>: A
# => #<Thread:0x00000002a541a8 dead>: B
# => #<Thread:0x00000002a54130 dead>: C
//}

Thread
#[] と Thread#[]= を用いたスレッド固有の変数は
Fiber を切り替えると異なる変数を...
...返す事に注意してください。

//emlist[][ruby]{
def meth(newvalue)
begin
oldvalue = Thread.current[:name]
Thread
.current[:name] = newvalue
yield
ensure
Thread
.current[:name] = oldvalue
end
end
//}

この関数に与えるブロックがFiberを切り替える場合...

Thread#add_trace_func(pr) -> Proc (13.0)

スレッドにトレース用ハンドラを追加します。

...ッドにトレース用ハンドラを追加します。

追加したハンドラを返します。

@
param pr トレースハンドラ(Proc オブジェクト)

//emlist[例][ruby]{
th = Thread.new do
class Trace
end
43.to_s
end
th.add_trace_func lambda {|*arg| p arg }
th.join

# => ["line"...
...e0>, nil]
# => ["line", "example.rb", 6, nil, #<Binding:0x00007f98e108d4b0>, nil]
# => ["c-call", "example.rb", 6, :to_s, #<Binding:0x00007f98e1097aa0>, Integer]
# => ["c-return", "example.rb", 6, :to_s, #<Binding:0x00007f98e1095cc8>, Integer]
//}

@
see Thread#set_trace_func Kernel.#set_trace_func...

Thread#join -> self (13.0)

スレッド self の実行が終了するまで、カレントスレッドを停止し ます。self が例外により終了していれば、その例外がカレントス レッドに対して発生します。

...定して、limit 秒過ぎても自身が終了しない場合、nil を返します。

@
param limit タイムアウトする時間を整数か小数で指定します。単位は秒です。

@
raise ThreadError join を実行することによってデッドロックが起きる場合に発生し...
...

以下は、生成したすべてのスレッドの終了を待つ例です。

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

thread
s.each {|t| t.join}...

絞り込み条件を変える

<< 1 2 3 ... > >>