427件ヒット
[1-100件を表示]
(0.124秒)
種類
- インスタンスメソッド (339)
- 特異メソッド (52)
- 文書 (24)
- クラス (12)
クラス
- Monitor (42)
-
MonitorMixin
:: ConditionVariable (24) - Mutex (8)
- Thread (84)
-
Thread
:: Mutex (40) -
Thread
:: Queue (36) -
Thread
:: SizedQueue (69) - ThreadGroup (24)
- TracePoint (16)
モジュール
- MonitorMixin (24)
-
Mutex
_ m (24)
キーワード
- << (11)
-
NEWS for Ruby 2
. 0 . 0 (12) - add (12)
- deq (24)
- enclose (12)
- enq (11)
- enter (12)
- exit (12)
- fork (12)
- join (24)
- lock (12)
-
mon
_ check _ owner (6) -
mon
_ enter (18) -
mon
_ exit (18) -
mu
_ unlock (12) - new (16)
- pop (24)
- push (11)
-
ruby 1
. 6 feature (12) - run (12)
- shift (24)
- sleep (12)
- start (12)
- synchronize (12)
- trace (12)
- unlock (24)
- wait (12)
-
wait
_ while (12) - wakeup (12)
検索結果
先頭5件
-
ThreadError (44000.0)
-
Thread 関連のエラーが起きたときに発生します。
...Thread 関連のエラーが起きたときに発生します。
* カレントスレッドを Thread#join しようとしたとき
* Thread#join でデッドロックしそうになったとき
* 終了したスレッドを Thread#wakeup あるいは Thread#run しようとしたとき
*......スレッドが一つしかないのに Thread.stop しようとしたとき
* Kernel.#throw がスレッド内で Kernel.#catch されないとき
* スレッドから return しようとしたとき
* イテレータを与えずにスレッドを生成しようとしたとき
* カレン......トスレッドの属するスレッドグループが freeze されているときに、スレッドを生成しようとしたとき
* freeze あるいは enclose されているスレッドグループにスレッドを加えようとした時... -
Thread
:: SizedQueue # deq(non _ block = false) -> object (6130.0) -
キューからひとつ値を取り出します。 キューに push しようと待っているスレッドがあれば、実行を再開させます。
...ram non_block true を与えると、キューが空の時に例外 ThreadError が発生します。
//emlist[例][ruby]{
require '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......resource1
# resource2
# resource3
//}
//emlist[例: nonblock = true][ruby]{
require '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
# => #<ThreadError: queue empty>
# => "queue empty"
//}
@see Thread::Queue#pop... -
ThreadGroup
# enclose -> self (6128.0) -
自身への ThreadGroup#add によるスレッドの追加・削除を禁止します。 enclose された ThreadGroup に追加や削除を行うと例外 ThreadError が発生します。
...自身への ThreadGroup#add によるスレッドの追加・削除を禁止します。
enclose された ThreadGroup に追加や削除を行うと例外 ThreadError が発生します。
ただし、Thread.new によるスレッドの追加は禁止されません。enclose されたスレッ......readGroup.new.enclose
thg.add Thread.new {}
=> -:2:in `add': can't move to the enclosed thread group (ThreadError)
削除の例:
thg1 = ThreadGroup.new
thg2 = ThreadGroup.new
th = Thread.new {sleep 1}
thg1.add th
thg1.enclose
thg2.add th
=> -:8:in `add': can't move from the e......nclosed thread group (ThreadError)... -
Thread
:: Queue # deq(non _ block = false) -> object (6124.0) -
キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。
...@param non_block true を与えると、キューが空の時に例外 ThreadError が発生します。
//emlist[例][ruby]{
require 'thread'
q = Queue.new
th1 = Thread.start do
while resource = q.pop
puts resource
end
end
[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r....../emlist[例: nonblock = true][ruby]{
require 'thread'
q = Queue.new
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
end
# => resource1
# resource2
# res......ource3
# => #<ThreadError: queue empty>
# => "queue empty"
//}... -
Monitor
# exit -> () (6112.0) -
MonitorMixin#mon_exit の別名です。
...rMixin#mon_exit の別名です。
enter でロックした回数だけ exit を呼ばなければモニターは解放されません。
モニターが解放されればモニターのロック待ちになっていた
スレッドが一つ実行を再開します。
@raise ThreadError ロック......を持っていないスレッドが呼びだした場合に発生します
//emlist[例][ruby]{
require 'monitor'
mon = Monitor.new
mon.enter
mon.enter
mon.exit
mon.exit
mon.exit # => current thread not owner (ThreadError)
//}......を解放します。
enter でロックした回数だけ exit を呼ばなければモニターは解放されません。
モニターが解放されればモニターのロック待ちになっていた
スレッドが一つ実行を再開します。
@raise ThreadError ロックを持って......いないスレッドが呼びだした場合に発生します
//emlist[例][ruby]{
require 'monitor'
mon = Monitor.new
mon.enter
mon.enter
mon.exit
mon.exit
mon.exit # => current thread not owner (ThreadError)
//}... -
Monitor
# mon _ exit -> () (6112.0) -
モニターのロックを解放します。
...を解放します。
enter でロックした回数だけ exit を呼ばなければモニターは解放されません。
モニターが解放されればモニターのロック待ちになっていた
スレッドが一つ実行を再開します。
@raise ThreadError ロックを持って......いないスレッドが呼びだした場合に発生します
//emlist[例][ruby]{
require 'monitor'
mon = Monitor.new
mon.enter
mon.enter
mon.exit
mon.exit
mon.exit # => current thread not owner (ThreadError)
//}... -
Monitor
# enter -> () (6106.0) -
MonitorMixin#mon_enter の別名です。
...torMixin#mon_enter の別名です。
Thread::Mutex#lock に相当します。
Thread::Mutex#lock と違うのは現在のモニターの所有者が現在実行されているスレッドである場合、
何度でもロックできる点です。ロックした回数だけ Monitor#exit を呼ば......されません。
//emlist[例][ruby]{
require 'monitor'
mon = Monitor.new
mon.enter
mon.enter
//}
Thread::Mutex#lock ではデッドロックが起きます。
//emlist[Mutex でデッドロックする例][ruby]{
m = Mutex.new
m.lock
m.lock # => deadlock; recursive locking (ThreadError)
//}......ドは待ちます。
Thread::Mutex#lock に相当します。
Thread::Mutex#lock と違うのは現在のモニターの所有者が現在実行されているスレッドである場合、
何度でもロックできる点です。ロックした回数だけ Monitor#exit を呼ばなければモ... -
Monitor
# mon _ check _ owner -> nil (6106.0) -
MonitorMixin 用の内部メソッドです。
...MonitorMixin 用の内部メソッドです。
@raise ThreadError ロックを持っていないスレッドが呼びだした場合に発生します... -
Monitor
# mon _ enter -> () (6106.0) -
モニターをロックします。
...ドは待ちます。
Thread::Mutex#lock に相当します。
Thread::Mutex#lock と違うのは現在のモニターの所有者が現在実行されているスレッドである場合、
何度でもロックできる点です。ロックした回数だけ Monitor#exit を呼ばなければモ......されません。
//emlist[例][ruby]{
require 'monitor'
mon = Monitor.new
mon.enter
mon.enter
//}
Thread::Mutex#lock ではデッドロックが起きます。
//emlist[Mutex でデッドロックする例][ruby]{
m = Mutex.new
m.lock
m.lock # => deadlock; recursive locking (ThreadError)
//}... -
MonitorMixin
# mon _ enter -> () (6106.0) -
モニターをロックします。
...レッドは待ちます。
Thread::Mutex#lock に相当します。
Mutex#lock と違うのは現在のモニターの所有者が現在実行されているスレッドである場合、
何度でもロックできる点です。ロックした回数だけ mon_exit を呼ばなければモニタ......。
//emlist[例][ruby]{
require 'monitor'
buf = []
buf.extend(MonitorMixin)
buf.mon_enter
buf.mon_enter
//}
Mutex#lock ではデッドロックが起きます。
//emlist[Mutex でデッドロックする例][ruby]{
m = Mutex.new
m.lock
m.lock # => deadlock; recursive locking (ThreadError)
//}...