230件ヒット
[1-100件を表示]
(0.094秒)
ライブラリ
- ビルトイン (104)
- monitor (66)
-
shell
/ process-controller (6) - socket (11)
- thread (6)
クラス
-
MonitorMixin
:: ConditionVariable (55) - Mutex (2)
-
Shell
:: ProcessController (6) - SignalException (55)
- Thread (11)
-
Thread
:: ConditionVariable (22) -
Thread
:: Mutex (9)
モジュール
-
Socket
:: Constants (11)
キーワード
-
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (11) - ConditionVariable (11)
-
MSG
_ NOSIGNAL (11) - MonitorMixin (11)
-
NEWS for Ruby 2
. 0 . 0 (11) -
NEWS for Ruby 3
. 0 . 0 (4) - broadcast (11)
-
handle
_ interrupt (11) -
kill
_ job (6) - new (33)
-
ruby 1
. 8 . 4 feature (11) - signm (11)
- signo (11)
- synchronize (11)
- wait (22)
-
wait
_ until (11) -
wait
_ while (11)
検索結果
先頭5件
-
MonitorMixin
:: ConditionVariable # signal -> () (27201.0) -
その条件変数で待っているスレッドがあれば実行を再開させます。
...その条件変数で待っているスレッドがあれば実行を再開させます。
複数のスレッドが待っている場合には1つのスレッドのみ
実行を再開します。
@see MonitorMixin::ConditionVariable#broadcast... -
Thread
:: ConditionVariable # signal -> self (24207.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"
whil......e (flg)
cv.wait(mutex)
end
puts "a2"
}
}
}
Thread.start {
mutex.synchronize {
flg = false
cv.signal
}
}
sleep 1
# => a1
# => a1
# => a1
# => a2
//}... -
Thread
:: ConditionVariable (12042.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
...の一つである状態変数を実現するクラスです。
以下も ConditionVariable を理解するのに参考になります。
https://ruby-doc.com/docs/ProgrammingRuby/html/tut_threads.html#UF
=== Condition Variable とは
あるスレッド A が排他領域で動いていたとし......状況を解決するのが Condition Variable です。
スレッド a で条件(リソースが空いているかなど)が満たされるまで wait メソッドで
スレッドを止めます。他のスレッド b において条件が満たされたなら signal
メソッドでスレッド a......ex = Mutex.new
cv = ConditionVariable.new
a = Thread.start {
mutex.synchronize {
...
while (条件が満たされない)
cv.wait(mutex)
end
...
}
}
b = Thread.start {
mutex.synchronize {
# 上の... -
Socket
:: Constants :: MSG _ NOSIGNAL -> Integer (9200.0) -
Do not generate SIGPIPE
...Do not generate SIGPIPE
BasicSocket#send, BasicSocket#sendmsg の
flags 引数に用います。
@see send(2linux), send(2freebsd)... -
MonitorMixin
:: ConditionVariable # broadcast -> () (9106.0) -
その条件変数で 待っている全てのスレッドの実行を再開します。
...その条件変数で
待っている全てのスレッドの実行を再開します。
@see MonitorMixin::ConditionVariable#signal... -
MonitorMixin
:: ConditionVariable # wait(timeout = nil) -> bool (9106.0) -
モニタのロックを開放し、現在のスレッドを停止します。
...止します。
これを呼ぶスレッドはモニタのロックを保持している必要があります。
MonitorMixin::ConditionVariable#signal や
MonitorMixin::ConditionVariable#broadcast
で起こされるまでスレッドは停止し続けます。
timeout を与えた場合は最大......。
実行を再開したスレッドはモニタのロックを保持した状態になります。
これによって危険領域(critical section)上で動作している
スレッドはただ一つになり、排他を実現します。
true を返します。timeout が与えられていて......での秒数。指定しなかった場合はタイムアウトしません。
@raise ThreadError ロックを持っていないスレッドがこのメソッドを呼びだした場合に発生します
@see MonitorMixin::ConditionVariable#wait_while, MonitorMixin::ConditionVariable#wait_until... -
MonitorMixin
:: ConditionVariable # wait _ until { . . . } -> () (9106.0) -
モニタのロックを開放し、現在のスレッドを ブロックで指定した条件を満たすまで停止します。
...ックを開放し、現在のスレッドを
ブロックで指定した条件を満たすまで停止します。
MonitorMixin::ConditionVariable#signal や
MonitorMixin::ConditionVariable#broadcast で
スレッドが起こされると、ロックを取得し、ブロックを評価し
その結......果によってこのメソッドから抜け処理を継続するか
再びロックを開放しスレッドを停止するかを決めます。
@see MonitorMixin::ConditionVariable#wait... -
MonitorMixin
:: ConditionVariable # wait _ while { . . . } -> () (9106.0) -
モニタのロックを開放し、現在のスレッドを ブロックで指定した条件を満たしている間停止します。
...を開放し、現在のスレッドを
ブロックで指定した条件を満たしている間停止します。
MonitorMixin::ConditionVariable#signal や
MonitorMixin::ConditionVariable#broadcast で
スレッドが起こされると、ロックを取得し、ブロックを評価し
その結......このメソッドから抜け処理を継続するか
再びロックを開放しスレッドを停止するかを決めます。
@raise ThreadError ロックを持っていないスレッドがこのメソッドを呼びだした場合に発生します
@see MonitorMixin::ConditionVariable#wait... -
SignalException
. new(sig _ name) -> SignalException (6330.0) -
引数で指定したシグナルに関する SignalException オブジェクトを生成して返 します。
...引数で指定したシグナルに関する SignalException オブジェクトを生成して返
します。
引数は Signal.#list に含まれるもののいずれかを指定する必要があり
ます。
@param sig_name シグナル名を Symbol オブジェクト、文字列のいずれ......ます。
//emlist[例][ruby]{
signal_number = Signal.list["INT"]
se = SignalException.new(signal_number) # => #<SignalException: SIGINT>
se.signo # => 2
//}
//emlist[例][ruby]{
se = SignalException.new("INT") # => #<SignalException: SIGINT>
se.signm # => "SIGINT"
//}
@see Signal.#list... -
SignalException
. new(sig _ number) -> SignalException (6330.0) -
引数で指定したシグナルに関する SignalException オブジェクトを生成して返 します。
...引数で指定したシグナルに関する SignalException オブジェクトを生成して返
します。
引数は Signal.#list に含まれるもののいずれかを指定する必要があり
ます。
@param sig_name シグナル名を Symbol オブジェクト、文字列のいずれ......ます。
//emlist[例][ruby]{
signal_number = Signal.list["INT"]
se = SignalException.new(signal_number) # => #<SignalException: SIGINT>
se.signo # => 2
//}
//emlist[例][ruby]{
se = SignalException.new("INT") # => #<SignalException: SIGINT>
se.signm # => "SIGINT"
//}
@see Signal.#list...