ライブラリ
- ビルトイン (92)
- monitor (60)
- shell (6)
-
shell
/ process-controller (6) -
shell
/ system-command (6) - thread (4)
クラス
-
MonitorMixin
:: ConditionVariable (60) - Mutex (2)
-
Process
:: Status (12) - Shell (6)
-
Shell
:: ProcessController (6) -
Shell
:: SystemCommand (6) - SignalException (24)
- Thread (4)
-
Thread
:: ConditionVariable (24) -
Thread
:: Mutex (30)
キーワード
- broadcast (12)
-
ignore
_ deadlock= (4) - kill (12)
-
kill
_ job (6) - lock (10)
- signaled? (12)
- signm (12)
- signo (12)
- synchronize (12)
- unlock (10)
- wait (24)
-
wait
_ until (12) -
wait
_ while (12)
検索結果
先頭5件
-
Thread
:: ConditionVariable # signal -> self (24108.0) -
状態変数を待っているスレッドを1つ再開します。再開された スレッドは Thread::ConditionVariable#wait で指定した mutex のロックを試みます。
...スレッドは 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
//}... -
MonitorMixin
:: ConditionVariable # signal -> () (24102.0) -
その条件変数で待っているスレッドがあれば実行を再開させます。
...その条件変数で待っているスレッドがあれば実行を再開させます。
複数のスレッドが待っている場合には1つのスレッドのみ
実行を再開します。
@see MonitorMixin::ConditionVariable#broadcast... -
MonitorMixin
:: ConditionVariable # broadcast -> () (12207.0) -
その条件変数で 待っている全てのスレッドの実行を再開します。
...その条件変数で
待っている全てのスレッドの実行を再開します。
@see MonitorMixin::ConditionVariable#signal... -
Thread
# ignore _ deadlock=(bool) (12107.0) -
デッドロック検知を無視する機能をon/offします。デフォルト値はfalseです。
...す。
trueを渡すとデッドロックを検知しなくなります。
//emlist[][ruby]{
Thread.ignore_deadlock = true
queue = Thread::Queue.new
trap(:SIGUSR1){queue.push "Received signal"}
# ignore_deadlockがfalseだとエラーが発生する
puts queue.pop
//}
@see Thread#ignore_deadloc... -
Process
:: Status # signaled? -> bool (12101.0) -
プロセスがハンドラを定義していないシグナルを受けて終了した場合に真 を返します。
プロセスがハンドラを定義していないシグナルを受けて終了した場合に真
を返します。 -
Shell
:: ProcessController # kill _ job(signal , command) -> Integer (9308.0) -
指定されたコマンドにシグナルを送ります。
...@param signal シグナルを整数かその名前の文字列で指定します。
負の値を持つシグナル(あるいはシグナル名の前に-)を指定すると、
プロセスではなくプロセスグループにシグナルを送ります。
@param comm......and コマンドを指定します。
@see Process.#kill... -
Mutex
# synchronize { . . . } -> object (9207.0) -
mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します。
...mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します。
ブロックが最後に評価した値を返します。
@raise ThreadError self 既にカレントスレッドにロックされている場合に発
生しま......また、Signal.#trap に指定したハンドラ内で実行
した場合に発生します。
//emlist[例][ruby]{
m = Mutex.new
result = m.synchronize do
m.locked? # => true
# critical part
"result"
end
m.locked? # => false
result # => "result"
//}... -
Thread
:: Mutex # synchronize { . . . } -> object (9207.0) -
mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します。
...mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します。
ブロックが最後に評価した値を返します。
@raise ThreadError self 既にカレントスレッドにロックされている場合に発
生しま......また、Signal.#trap に指定したハンドラ内で実行
した場合に発生します。
//emlist[例][ruby]{
m = Mutex.new
result = m.synchronize do
m.locked? # => true
# critical part
"result"
end
m.locked? # => false
result # => "result"
//}... -
Thread
:: ConditionVariable # wait(mutex , timeout = nil) -> self (9123.0) -
mutex のロックを解放し、カレントスレッドを停止します。 Thread::ConditionVariable#signalまたは、 Thread::ConditionVariable#broadcastで送られたシグナルを 受け取ると、mutexのロックを取得し、実行状態となります。
...mutex のロックを解放し、カレントスレッドを停止します。
Thread::ConditionVariable#signalまたは、
Thread::ConditionVariable#broadcastで送られたシグナルを
受け取ると、mutexのロックを取得し、実行状態となります。
@param mutex Thread::Mutex......param timeout スリープする秒数を指定します。この場合はシグナルを受け取
らなかった場合でも指定した秒数が経過するとスリープを終了
します。省略するとスリープし続けます。
@see Thread::ConditionVaria......ble#signal, Thread::ConditionVariable#broadcast......mutex のロックを解放し、カレントスレッドを停止します。
Thread::ConditionVariable#signalまたは、
Thread::ConditionVariable#broadcastで送られたシグナルを
受け取ると、mutexのロックを取得し、実行状態となります。
@param mutex Mutex オブ... -
MonitorMixin
:: ConditionVariable # wait(timeout = nil) -> bool (9107.0) -
モニタのロックを開放し、現在のスレッドを停止します。
...クを保持している必要があります。
MonitorMixin::ConditionVariable#signal や
MonitorMixin::ConditionVariable#broadcast
で起こされるまでスレッドは停止し続けます。
timeout を与えた場合は最大 timeout 秒まで停止した後にスレッドを
再開しま......よって危険領域(critical section)上で動作している
スレッドはただ一つになり、排他を実現します。
true を返します。timeout が与えられていて待ち時間が timeout を
越えた場合は false を返します。
@param timeout タイムアウトまで......の秒数。指定しなかった場合はタイムアウトしません。
@raise ThreadError ロックを持っていないスレッドがこのメソッドを呼びだした場合に発生します
@see MonitorMixin::ConditionVariable#wait_while, MonitorMixin::ConditionVariable#wait_until... -
MonitorMixin
:: ConditionVariable # wait _ until { . . . } -> () (9107.0) -
モニタのロックを開放し、現在のスレッドを ブロックで指定した条件を満たすまで停止します。
...放し、現在のスレッドを
ブロックで指定した条件を満たすまで停止します。
MonitorMixin::ConditionVariable#signal や
MonitorMixin::ConditionVariable#broadcast で
スレッドが起こされると、ロックを取得し、ブロックを評価し
その結果によっ......てこのメソッドから抜け処理を継続するか
再びロックを開放しスレッドを停止するかを決めます。
@see MonitorMixin::ConditionVariable#wait...