種類
ライブラリ
クラス
- Exception (12)
- Fiber (24)
- IO (120)
-
IRB
:: Context (12) - Monitor (24)
- Mutex (6)
-
Net
:: IMAP (24) - PStore (12)
- Shell (20)
- Socket (48)
- Thread (516)
-
Thread
:: Backtrace :: Location (72) -
Thread
:: ConditionVariable (36) -
Thread
:: Mutex (40) -
Thread
:: Queue (44) -
Thread
:: SizedQueue (106) - ThreadGroup (24)
- ThreadsWait (36)
- TracePoint (12)
- Tracer (24)
-
YAML
:: Store (18)
モジュール
キーワード
-
$ -d (12) -
$ DEBUG (12) -
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (12) - << (12)
- ConditionVariable (12)
- DEBUG (12)
- DEBUG= (12)
- ErrNoFinishedThread (6)
- ErrNoWaitingThread (6)
- Location (12)
- MonitorMixin (12)
-
NEWS for Ruby 3
. 0 . 0 (5) -
NEWS for Ruby 3
. 1 . 0 (4) - Ruby用語集 (12)
- [] (12)
- []= (12)
-
abort
_ on _ exception (24) -
abort
_ on _ exception= (24) -
absolute
_ path (12) - add (12)
-
add
_ trace _ func (12) - alive? (12)
-
all
_ waits (12) - application= (12)
-
backtrace
_ locations (36) -
base
_ label (12) - broadcast (12)
-
caller
_ locations (24) -
clock
_ gettime (12) - close (10)
-
count
_ tdata _ objects (12) -
debug
_ output _ lock (4) -
debug
_ output _ locked? (4) -
debug
_ output _ synchronize (4) -
debug
_ output _ try _ lock (4) -
debug
_ output _ unlock (4) - deq (24)
- detach (12)
-
display
_ thread _ id= (12) -
drb
/ extservm (12) -
drb
/ gw (12) - dump (24)
- enclosed? (12)
- enq (12)
- eof (12)
- eof? (12)
- exit (24)
- fetch (8)
- fork (12)
-
get
_ thread _ no (12) -
handle
_ interrupt (12) -
ignore
_ deadlock (4) -
ignore
_ deadlock= (4) - inspect (12)
- join (30)
-
join
_ nowait (6) - key? (12)
- kill (24)
- label (12)
- lock (12)
- max= (12)
-
mon
_ exit (6) - name (10)
- name= (10)
- new (80)
-
next
_ wait (6) - path (12)
-
pending
_ interrupt? (24) - pipe (96)
-
pipeline
_ r (24) -
pipeline
_ rw (24) -
pipeline
_ start (24) -
pipeline
_ w (24) - pop (24)
- popen2 (24)
- popen2e (24)
- popen3 (24)
- priority (12)
- priority= (12)
- push (12)
- raise (12)
-
rb
_ thread _ schedule (12) -
report
_ on _ exception (18) -
report
_ on _ exception= (18) - resume (12)
-
ruby 1
. 6 feature (12) -
ruby 1
. 8 . 3 feature (12) -
ruby 1
. 8 . 4 feature (12) - run (12)
-
set
_ trace _ func (12) - shift (24)
- signal (12)
- sleep (36)
- start (12)
- status (12)
- stop (12)
- stop? (12)
-
sync
_ ex _ locker (6) -
sync
_ ex _ locker= (6) -
sync
_ upgrade _ waiting (6) -
sync
_ waiting (6) - synchronize (10)
-
tcp
_ server _ loop (24) - terminate (12)
- thread (36)
-
thread
_ variable? (12) -
thread
_ variable _ get (12) -
thread
_ variable _ set (12) - timeout (37)
-
to
_ s (12) - transfer (12)
-
uid
_ thread (12) - unix (24)
- unlock (12)
- wait (12)
-
wait
_ for _ cond (6) - wakeup (12)
- yaml (12)
- スレッド (12)
- セキュリティモデル (12)
検索結果
先頭5件
-
Thread (38118.0)
-
スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Thread を使うことで並行プログラミングが可能になります。
...スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。
Thread を使うことで並行プログラミングが可能になります。
=== 実装
ネイティブスレッドを用いて実装されていますが、......だ
しその例外で終了するスレッドを Thread#join で待っている他の
スレッドがある場合、その待っているスレッドに対して、同じ例外が再度
発生します。
begin
t = Thread.new do
Thread.pass # メインスレッドが確実にjoinす......ill 等で終了したスレッドはこの状態になります。この状
態のスレッドはどこからも参照されていなければ GC によりメモリ上から
なくなります。
この状態のスレッドは「死んで」います。
=== デッドロックの検出
@todo... -
Thread
# thread _ variable _ get(key) -> object | nil (27197.0) -
引数 key で指定した名前のスレッドローカル変数を返します。
...注意]: Thread#[] でセットしたローカル変数(Fiber ローカル変数)と
異なり、Fiber を切り替えても同じ変数を返す事に注意してください。
例:
Thread.new {
Thread.current.thread_variable_set("foo", "bar") # スレッドローカル
Thread.current......
Thread.current.thread_variable_get("foo"), # スレッドローカル
Thread.current["foo"], # Fiber ローカル
]
}.resume
}.join.value # => ['bar', nil]
この例の "bar" は Thread#thread_variable_get により得られ
た値で、nil はThread......#[] により得られた値です。
@see Thread#thread_variable_set, Thread#[]
@see https://magazine.rubyist.net/articles/0041/0041-200Special-note.html... -
Thread
# thread _ variable _ set(key , value) (27173.0) -
引数 key で指定した名前のスレッドローカル変数に引数 value をセットしま す。
...]: Thread#[] でセットしたローカル変数(Fiber ローカル変数)と
異なり、セットした変数は Fiber を切り替えても共通で使える事に注意してく
ださい。
//emlist[例][ruby]{
thr = Thread.new do
Thread.current.thread_variable_set(:cat, 'meow')
Thread.c......urrent.thread_variable_set("dog", 'woof')
end
thr.join # => #<Thread:0x401b3f10 dead>
thr.thread_variables # => [:dog, :cat]
//}
@see Thread#thread_variable_get, Thread#[]... -
Thread
# thread _ variable?(key) -> bool (27161.0) -
引数 key で指定した名前のスレッドローカル変数が存在する場合に true、そ うでない場合に false を返します。
...合に false を返します。
@param key 変数名を String か Symbol で指定します。
me = Thread.current
me.thread_variable_set(:oliver, "a")
me.thread_variable?(:oliver) # => true
me.thread_variable?(:stanley) # => false
[注意]: Thread#[] でセットしたロー......カル変数(Fiber ローカル変数)が
対象ではない事に注意してください。
@see Thread#thread_variable_get, Thread#[]... -
Thread
. kill(thread) -> Thread (21270.0) -
指定したスレッド thread に対して Thread#exit を呼びます。終了したスレッドを返します。
...指定したスレッド thread に対して Thread#exit を呼びます。終了したスレッドを返します。
@param thread 終了したい Thread オブジェクトを指定します。
th = Thread.new do
end
p Thread.kill(th) #=> #<Thread:0x40221bc8 dead>... -
Thread
# backtrace _ locations(range) -> [Thread :: Backtrace :: Location] | nil (21172.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 (21172.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
# [](name) -> object | nil (21144.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
. fork(*arg) {|*arg| . . . } -> Thread (21132.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...