別のキーワード
種類
ライブラリ
クラス
-
DRb
:: DRbServer (11) - Fiber (22)
-
IRB
:: Context (11) - Monitor (32)
- Mutex (8)
-
Net
:: IMAP (22) -
Net
:: IMAP :: ThreadMember (11) - PStore (11)
- Socket (22)
- Thread (550)
-
Thread
:: ConditionVariable (33) -
Thread
:: Mutex (45) -
Thread
:: Queue (77) -
Thread
:: SizedQueue (75) - ThreadGroup (44)
- ThreadsWait (60)
- TracePoint (11)
- Tracer (33)
- WIN32OLE (11)
-
YAML
:: Store (16)
キーワード
-
$ -d (11) -
$ DEBUG (11) -
$ SAFE (5) -
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (11) - << (22)
-
CP
_ THREAD _ ACP (11) - ConditionVariable (11)
- DEBUG (11)
- DEBUG= (11)
- Default (11)
- Enumerator (11)
- ErrNoWaitingThread (6)
- Fiber (11)
- Monitor (11)
- MonitorMixin (11)
-
Mutex
_ m (9) -
NEWS for Ruby 2
. 0 . 0 (11) -
NEWS for Ruby 2
. 2 . 0 (10) -
NEWS for Ruby 2
. 3 . 0 (9) -
NEWS for Ruby 2
. 4 . 0 (8) -
NEWS for Ruby 2
. 5 . 0 (7) -
NEWS for Ruby 2
. 6 . 0 (6) -
NEWS for Ruby 2
. 7 . 0 (5) - Queue (11)
- Ruby用語集 (11)
- Thread (11)
- ThreadError (11)
- ThreadGroup (11)
- ThreadMember (11)
- ThreadsWait (6)
- WIN32OLE (11)
- [] (11)
- []= (11)
-
abort
_ on _ exception (22) -
abort
_ on _ exception= (22) - add (11)
-
add
_ trace _ func (11) - alive? (11)
-
all
_ waits (18) - backtrace (11)
-
backtrace
_ locations (22) - broadcast (11)
- children (11)
- close (9)
- current (11)
- debug (11)
- deq (22)
- detach (11)
-
display
_ thread _ id (11) -
display
_ thread _ id= (11) -
display
_ thread _ id? (11) - drb (11)
-
drb
/ extservm (11) - empty? (6)
- enclose (11)
- enq (22)
- enter (11)
- exclusive (11)
- exit (33)
- fetch (7)
- finished? (6)
- fork (11)
- group (11)
-
handle
_ interrupt (11) - irb (11)
- join (28)
-
join
_ nowait (6) - key? (11)
- keys (11)
- kill (22)
- list (22)
- lock (11)
- main (11)
-
mon
_ enter (16) -
mon
_ exit (5) - monitor (11)
-
net
/ imap (11) - new (55)
-
next
_ wait (6) -
num
_ waiting (11) - owned? (11)
- pass (11)
-
pending
_ interrupt? (11) -
pipeline
_ r (22) -
pipeline
_ rw (22) -
pipeline
_ w (22) - pop (22)
- popen2 (22)
- popen2e (22)
- popen3 (22)
- priority (11)
- priority= (11)
- push (22)
- raise (11)
-
rb
_ gc _ mark _ threads (11) -
rb
_ thread _ alone (11) -
rb
_ thread _ current (11) -
rb
_ thread _ main (11) -
rb
_ thread _ restore _ context (11) -
rb
_ thread _ run (11) -
rb
_ thread _ save _ context (11) -
rb
_ thread _ schedule (11) -
rb
_ thread _ select (1) -
rb
_ thread _ start _ timer (11) -
rb
_ thread _ stop (11) -
rb
_ thread _ stop _ timer (11) -
rb
_ thread _ wait _ fd (11) -
rb
_ thread _ wait _ for (11) -
rb
_ thread _ wakeup (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) -
ruby 1
. 8 . 5 feature (11) - run (11)
-
safe
_ level (5) -
set
_ trace _ func (11) - shift (22)
- signal (11)
- sleep (33)
- start (11)
- status (11)
- stop (11)
- stop? (11)
- synchronize (9)
-
tcp
_ server _ loop (22) - terminate (11)
-
thread
_ variable? (11) -
thread
_ variable _ get (11) -
thread
_ variable _ set (11) - threads (6)
- timeout (41)
- transfer (11)
-
uid
_ thread (11) - unlock (11)
- value (11)
- wait (11)
- wakeup (11)
- セキュリティモデル (11)
- 終了処理 (11)
検索結果
先頭5件
-
thread (38028.0)
-
スレッド間キューや状態変数 (condition variable) を提供するライブラリです。
...スレッド間キューや状態変数 (condition variable) を提供するライブラリです。
このライブラリは Thread を拡張します。rubyインタプリタを
デバッグオプション付き($DEBUGを真)で実行したときには、
Thread.abort_on_exception を true にし... -
スレッド (18417.0)
-
スレッド スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Ruby ではスレッドはThread クラスのインスタンスとして表されます。
...スレッド
スレッドとはメモリ空間を共有して同時に実行される制御の流れです。
Ruby ではスレッドはThread クラスのインスタンスとして表されます。
=== 実装
ネイティブスレッドを用いて実装されていますが、
現在の実装......おり、同時に実行される
ネイティブスレッドは常にひとつです。
ただし、IO 関連のブロックする可能性があるシステムコールを行う場合には
GVL を解放します。その場合にはスレッドは同時に実行され得ます。
また拡張ラ......リから GVL を操作できるので、複数のスレッドを
同時に実行するような拡張ライブラリは作成可能です。
=== スケジューリング
Ruby のスレッドスケジューリングはネイティブスレッドのそれを利用しています。
よって詳細... -
Net
:: IMAP # thread(algorithm , search _ keys , charset) -> [Net :: IMAP :: ThreadMember] (18251.0) -
THREADコマンドを送り、メールボックスを検索した結果を スレッド形式の木構造で返します。
...THREADコマンドを送り、メールボックスを検索した結果を
スレッド形式の木構造で返します。
THREAD コマンドは 5256 で定義されています。
詳しくはそちらを参照してください。
このコマンドは Net::IMAP#capability の返り値を見......渡します。
Net::IMAP#search と同等です。
@param algorithm スレッド構造構築アルゴリズム名(文字列)
@param search_key 検索条件(文字列配列)
@param charset 検索条件の解釈に用いるCHARSET名(文字列)
@see Net::IMAP::ThreadMember, Net::IMAP#uid_thread... -
DRb
:: DRbServer # thread -> Thread (18236.0) -
サーバのメインスレッドを返します。
...サーバのメインスレッドを返します。
このスレッドはクライアントからの接続を受け付けるスレッドであって、
クライアントへの応答をするスレッドではありません。... -
IRB
:: Context # thread -> Thread (18224.0) -
現在のスレッドを返します。
...現在のスレッドを返します。
@see Thread.current... -
DRb
. # thread -> Thread|nil (18218.0) -
プライマリサーバが動作しているスレッドを返します。
...プライマリサーバが動作しているスレッドを返します。
プライマリサーバが存在しない場合は nil を返します。
@see DRb.#primary_server... -
Thread
# thread _ variable _ get(key) -> object | nil (15213.0) -
引数 key で指定した名前のスレッドローカル変数を返します。
...名前のスレッドローカル変数を返します。
[注意]: Thread#[] でセットしたローカル変数(Fiber ローカル変数)と
異なり、Fiber を切り替えても同じ変数を返す事に注意してください。
例:
Thread.new {
Thread.current.thread_variable_set......("foo", "bar") # スレッドローカル
Thread.current["foo"] = "bar" # Fiber ローカル
Fiber.new {
Fiber.yield [
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... -
Thread
# thread _ variable _ set(key , value) (15183.0) -
引数 key で指定した名前のスレッドローカル変数に引数 value をセットしま す。
...引数 key で指定した名前のスレッドローカル変数に引数 value をセットしま
す。
[注意]: Thread#[] でセットしたローカル変数(Fiber ローカル変数)と
異なり、セットした変数は Fiber を切り替えても共通で使える事に注意してく......。
//emlist[例][ruby]{
thr = Thread.new do
Thread.current.thread_variable_set(:cat, 'meow')
Thread.current.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 (15165.0) -
引数 key で指定した名前のスレッドローカル変数が存在する場合に true、そ うでない場合に false を返します。
...スレッドローカル変数が存在する場合に true、そ
うでない場合に 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
:: ConditionVariable (11100.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
...スレッドの同期機構の一つである状態変数を実現するクラスです。
以下も ConditionVariable を理解するのに参考になります。
https://ruby-doc.com/docs/ProgrammingRuby/html/tut_threads.html#UF
=== Condition Variable とは
あるスレッド A が排他領......とします。スレッド A は現在空いていない
リソースが必要になったので空くまで待つことにしたとします。これはうまくいきません。
なぜなら、スレッド A は排他領域で動いているわけですから、他のスレッドは動くこと......ソースを空けることもできません。スレッド A がリソースの空きを
待っていても、いつまでも空くことはありません。
以上のような状況を解決するのが Condition Variable です。
スレッド a で条件(リソースが空いているかな... -
Thread
:: ConditionVariable # wait(mutex , timeout = nil) -> self (11066.0) -
mutex のロックを解放し、カレントスレッドを停止します。 Thread::ConditionVariable#signalまたは、 Thread::ConditionVariable#broadcastで送られたシグナルを 受け取ると、mutexのロックを取得し、実行状態となります。
...を解放し、カレントスレッドを停止します。
Thread::ConditionVariable#signalまたは、
Thread::ConditionVariable#broadcastで送られたシグナルを
受け取ると、mutexのロックを取得し、実行状態となります。
@param mutex Thread::Mutex オブジェクト......ます。この場合はシグナルを受け取
らなかった場合でも指定した秒数が経過するとスリープを終了
します。省略するとスリープし続けます。
@see Thread::ConditionVariable#signal, Thread::ConditionVariable#broadcast... -
Thread
:: ConditionVariable # broadcast -> self (11060.0) -
状態変数を待っているスレッドをすべて再開します。再開された スレッドは Thread::ConditionVariable#wait で指定した mutex のロックを試みます。
...るスレッドをすべて再開します。再開された
スレッドは Thread::ConditionVariable#wait
で指定した mutex のロックを試みます。
@return 常に self を返します。
//emlist[例][ruby]{
mutex = Mutex.new
cv = ConditionVariable.new
flg = true
3.times {
Thread.s......tart {
mutex.synchronize {
puts "a1"
while (flg)
cv.wait(mutex)
end
puts "a2"
}
}
}
Thread.start {
mutex.synchronize {
flg = false
cv.broadcast
}
}
sleep 1
# => a1
# => a1
# => a1
# => a2
# => a2
# => a2
//}... -
Thread
:: ConditionVariable # signal -> self (11060.0) -
状態変数を待っているスレッドを1つ再開します。再開された スレッドは Thread::ConditionVariable#wait で指定した mutex のロックを試みます。
...るスレッドを1つ再開します。再開された
スレッドは Thread::ConditionVariable#wait
で指定した mutex のロックを試みます。
@return 常に self を返します。
//emlist[例][ruby]{
mutex = Mutex.new
cv = ConditionVariable.new
flg = true
3.times {
Thread.start......{
mutex.synchronize {
puts "a1"
while (flg)
cv.wait(mutex)
end
puts "a2"
}
}
}
Thread.start {
mutex.synchronize {
flg = false
cv.signal
}
}
sleep 1
# => a1
# => a1
# => a1
# => a2
//}... -
Thread
:: SizedQueue # deq(non _ block = false) -> object (11046.0) -
キューからひとつ値を取り出します。 キューに push しようと待っているスレッドがあれば、実行を再開させます。
...ush しようと待っているスレッドがあれば、実行を再開させます。
@param non_block true を与えると、キューが空の時に例外 ThreadError が発生します。
//emlist[例][ruby]{
require 'thread'
q = SizedQueue.new(4)
th1 = Thread.start do
while resource = q......e 'thread'
q = SizedQueue.new(4)
th1 = Thread.start do
while resource = q.pop
puts resource
end
end
[:resource1, :resource2, :resource3, nil].each{|r|
q.push(r)
}
begin
th1.join
q.pop(true)
rescue => e
p e
p e.message
end
# => resource1
# resource2
# resource3
# => #<ThreadErr......or: queue empty>
# => "queue empty"
//}
@see Thread::Queue#pop...