クラス
- Monitor (15)
-
MonitorMixin
:: ConditionVariable (5) - Socket (1)
モジュール
- MonitorMixin (9)
-
Socket
:: Constants (1)
キーワード
- ConditionVariable (1)
-
IFF
_ MONITOR (2) - Monitor (1)
- MonitorMixin (1)
-
NEWS for Ruby 2
. 7 . 0 (1) -
NEWS for Ruby 3
. 1 . 0 (1) - broadcast (1)
- enter (1)
- exit (1)
-
mon
_ check _ owner (1) -
mon
_ enter (2) -
mon
_ exit (2) -
mon
_ locked? (2) -
mon
_ owned? (2) -
mon
_ synchronize (2) -
mon
_ try _ enter (2) - new (1)
-
new
_ cond (2) - signal (1)
- synchronize (2)
-
try
_ enter (1) -
try
_ mon _ enter (2) - wait (1)
-
wait
_ for _ cond (1) -
wait
_ until (1) -
wait
_ while (1)
検索結果
先頭5件
-
monitor (132019.0)
-
スレッドの同期機構としてのモニター機能を提供するクラスです。 また同じスレッドから何度も lock できる Mutex としての機能も提供します。
スレッドの同期機構としてのモニター機能を提供するクラスです。
また同じスレッドから何度も lock できる Mutex としての機能も提供します。
モニターとは、一つの Mutex とそれに関連付けられた複数の
条件変数から構成された、スレッドの同期機構です。
Mutex と 条件変数によって同等の機能を実現することは
可能ですが、モニタの利点はライブラリがその関連を保証
していることです。
monitor は以下のような Thread::Mutex としての機能も提供します。
* lock の持ち主がスレッドである Mutex / 何度も lock できる Mutex
* l... -
Monitor
# mon _ synchronize { . . . } -> object (96619.0) -
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
ブロックの評価値を返り値として返します。
@see Monitor#enter -
Monitor
# synchronize { . . . } -> object (87319.0) -
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
ブロックの評価値を返り値として返します。
@see Monitor#enter -
Monitor
# new _ cond -> MonitorMixin :: ConditionVariable (79501.0) -
モニターに関連付けられた、新しい MonitorMixin::ConditionVariable を生成して返します。
モニターに関連付けられた、新しい MonitorMixin::ConditionVariable を生成して返します。 -
Monitor
# wait _ for _ cond(cond , timeout) -> bool (78637.0) -
MonitorMixin::ConditionVariable 用の内部メソッドです。
MonitorMixin::ConditionVariable 用の内部メソッドです。
@param cond Thread::ConditionVariable を指定します。
@param timeout タイムアウトまでの秒数。指定しなかった場合はタイムアウトしません。
@return タイムアウトしたときは false を返します。それ以外は true を返します。
//emlist[例][ruby]{
require 'monitor'
m = Monitor.new
cv = Thread::ConditionVariable.new
m.enter
m.wait_for_c... -
MonitorMixin
# mon _ synchronize { . . . } -> object (78601.0) -
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
ブロックの評価値を返り値として返します。
@see MonitorMixin#mon_enter -
Monitor
# mon _ check _ owner -> nil (78301.0) -
MonitorMixin 用の内部メソッドです。
MonitorMixin 用の内部メソッドです。
@raise ThreadError ロックを持っていないスレッドが呼びだした場合に発生します -
Monitor
# mon _ locked? -> bool (78301.0) -
モニターがロックされているときに true を返します。
モニターがロックされているときに true を返します。 -
Monitor
# mon _ owned? -> bool (78301.0) -
カレントスレッドがモニターをロックしているときに true を返します。
カレントスレッドがモニターをロックしているときに true を返します。 -
Monitor
# mon _ try _ enter -> bool (78301.0) -
モニターのロックを取得しようと試みます。 ロックに成功した(ロックが開放状態だった、もしくは ロックを取得していたスレッドが自分自身であった)場合には 真を返します。
モニターのロックを取得しようと試みます。
ロックに成功した(ロックが開放状態だった、もしくは
ロックを取得していたスレッドが自分自身であった)場合には
真を返します。
ロックができなかった場合は偽を返し、実行を継続します。この場合には
スレッドはブロックしません。 -
Monitor
# try _ mon _ enter -> bool (78301.0) -
モニターのロックを取得しようと試みます。 ロックに成功した(ロックが開放状態だった、もしくは ロックを取得していたスレッドが自分自身であった)場合には 真を返します。
モニターのロックを取得しようと試みます。
ロックに成功した(ロックが開放状態だった、もしくは
ロックを取得していたスレッドが自分自身であった)場合には
真を返します。
ロックができなかった場合は偽を返し、実行を継続します。この場合には
スレッドはブロックしません。 -
MonitorMixin
:: ConditionVariable (78049.0) -
MonitorMixin と Monitor のための 条件変数クラスです。 MonitorMixin#new_cond が返します。ユーザが MonitorMixin::ConditionVariable.new を直接呼ぶことはありません。
MonitorMixin と Monitor のための
条件変数クラスです。
MonitorMixin#new_cond が返します。ユーザが
MonitorMixin::ConditionVariable.new を直接呼ぶことはありません。 -
Monitor
# mon _ enter -> () (69355.0) -
モニターをロックします。
モニターをロックします。
一度に一つのスレッドだけがモニターをロックできます。
既にモニターがロックされている場合は、ロックが開放されるまで
そのスレッドは待ちます。
Thread::Mutex#lock に相当します。
Thread::Mutex#lock と違うのは現在のモニターの所有者が現在実行されているスレッドである場合、
何度でもロックできる点です。ロックした回数だけ Monitor#exit を呼ばなければモニターは
解放されません。
//emlist[例][ruby]{
require 'monitor'
mon = Monitor.new
mon.enter
mon.en... -
Monitor
# mon _ exit -> () (69337.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... -
MonitorMixin
# synchronize { . . . } -> object (69301.0) -
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
ブロックの評価値を返り値として返します。
@see MonitorMixin#mon_enter -
Monitor
# try _ enter -> bool (69001.0) -
モニターのロックを取得しようと試みます。 ロックに成功した(ロックが開放状態だった、もしくは ロックを取得していたスレッドが自分自身であった)場合には 真を返します。
モニターのロックを取得しようと試みます。
ロックに成功した(ロックが開放状態だった、もしくは
ロックを取得していたスレッドが自分自身であった)場合には
真を返します。
ロックができなかった場合は偽を返し、実行を継続します。この場合には
スレッドはブロックしません。 -
MonitorMixin
# new _ cond -> MonitorMixin :: ConditionVariable (61501.0) -
モニターに関連付けられた、新しい MonitorMixin::ConditionVariable を生成して返します。
モニターに関連付けられた、新しい MonitorMixin::ConditionVariable を生成して返します。 -
Monitor
. new -> Monitor (60652.0) -
新しい Monitor オブジェクトを生成します。
新しい Monitor オブジェクトを生成します。 -
MonitorMixin
# mon _ enter -> () (60319.0) -
モニターをロックします。
モニターをロックします。
一度に一つのスレッドだけがモニターをロックできます。
既にモニターがロックされている場合は、ロックが開放されるまで
そのスレッドは待ちます。
Thread::Mutex#lock に相当します。
Mutex#lock と違うのは現在のモニターの所有者が現在実行されているスレッドである場合、
何度でもロックできる点です。ロックした回数だけ mon_exit を呼ばなければモニターは
解放されません。
//emlist[例][ruby]{
require 'monitor'
buf = []
buf.extend(MonitorMixin)
buf.mon_ent... -
MonitorMixin
# mon _ exit -> () (60301.0) -
モニターのロックを解放します。
モニターのロックを解放します。
mon_enter でロックした回数だけ mon_exit を
呼ばなければモニターは解放されません。
モニターが解放されればモニターのロック待ちになっていた
スレッドが一つ実行を再開します。
@raise ThreadError ロックを持っていないスレッドが呼びだした場合に発生します -
MonitorMixin
# mon _ locked? -> bool (60301.0) -
モニターがロックされているときに true を返します。
モニターがロックされているときに true を返します。 -
MonitorMixin
# mon _ owned? -> bool (60301.0) -
カレントスレッドがモニターをロックしているときに true を返します。
カレントスレッドがモニターをロックしているときに true を返します。 -
MonitorMixin
# mon _ try _ enter -> bool (60301.0) -
モニターのロックを取得しようと試みます。 ロックに成功した(ロックが開放状態だった、もしくは ロックを取得していたスレッドが自分自身であった)場合には 真を返します。
モニターのロックを取得しようと試みます。
ロックに成功した(ロックが開放状態だった、もしくは
ロックを取得していたスレッドが自分自身であった)場合には
真を返します。
ロックができなかった場合は偽を返し、実行を継続します。この場合には
スレッドはブロックしません。 -
MonitorMixin
# try _ mon _ enter -> bool (60301.0) -
モニターのロックを取得しようと試みます。 ロックに成功した(ロックが開放状態だった、もしくは ロックを取得していたスレッドが自分自身であった)場合には 真を返します。
モニターのロックを取得しようと試みます。
ロックに成功した(ロックが開放状態だった、もしくは
ロックを取得していたスレッドが自分自身であった)場合には
真を返します。
ロックができなかった場合は偽を返し、実行を継続します。この場合には
スレッドはブロックしません。 -
Monitor (60073.0)
-
スレッドの同期機構としてのモニター機能を提供するクラスです。 また同じスレッドから何度も lock できる Mutex としての機能も提供します。
スレッドの同期機構としてのモニター機能を提供するクラスです。
また同じスレッドから何度も lock できる Mutex としての機能も提供します。
MonitorMixin を include し、いくつかの別名を定義したクラスです。
=== 例
//emlist[消費者、生産者問題の例][ruby]{
require 'monitor'
buf = []
mon = Monitor.new
empty_cond = mon.new_cond
# consumer
Thread.start do
loop do
mon.synchronize do
empty... -
Monitor
# enter -> () (60055.0) -
モニターをロックします。
モニターをロックします。
一度に一つのスレッドだけがモニターをロックできます。
既にモニターがロックされている場合は、ロックが開放されるまで
そのスレッドは待ちます。
Thread::Mutex#lock に相当します。
Thread::Mutex#lock と違うのは現在のモニターの所有者が現在実行されているスレッドである場合、
何度でもロックできる点です。ロックした回数だけ Monitor#exit を呼ばなければモニターは
解放されません。
//emlist[例][ruby]{
require 'monitor'
mon = Monitor.new
mon.enter
mon.en... -
MonitorMixin (60055.0)
-
スレッドの同期機構としてのモニター機能を提供するモジュールです。
スレッドの同期機構としてのモニター機能を提供するモジュールです。
クラスに Module#include したり、オブジェクトに
Object#extend したりすることでそのクラス/オブジェクトに
モニタ機能を追加します。
=== 例
//emlist[消費者、生産者問題の例][ruby]{
require 'monitor'
buf = []
buf.extend(MonitorMixin) # 配列にモニタ機能を追加
empty_cond = buf.new_cond # 配列が空であるかないかを通知する条件変数
# consumer
Thread.start do
lo... -
Monitor
# exit -> () (60037.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... -
MonitorMixin
:: ConditionVariable # broadcast -> () (60001.0) -
その条件変数で 待っている全てのスレッドの実行を再開します。
その条件変数で
待っている全てのスレッドの実行を再開します。
@see MonitorMixin::ConditionVariable#signal -
MonitorMixin
:: ConditionVariable # signal -> () (60001.0) -
その条件変数で待っているスレッドがあれば実行を再開させます。
その条件変数で待っているスレッドがあれば実行を再開させます。
複数のスレッドが待っている場合には1つのスレッドのみ
実行を再開します。
@see MonitorMixin::ConditionVariable#broadcast -
MonitorMixin
:: ConditionVariable # wait(timeout = nil) -> bool (60001.0) -
モニタのロックを開放し、現在のスレッドを停止します。
モニタのロックを開放し、現在のスレッドを停止します。
これを呼ぶスレッドはモニタのロックを保持している必要があります。
MonitorMixin::ConditionVariable#signal や
MonitorMixin::ConditionVariable#broadcast
で起こされるまでスレッドは停止し続けます。
timeout を与えた場合は最大 timeout 秒まで停止した後にスレッドを
再開します。
実行を再開したスレッドはモニタのロックを保持した状態になります。
これによって危険領域(critical section)上で動作している
スレッドはただ一つになり... -
MonitorMixin
:: ConditionVariable # wait _ until { . . . } -> () (60001.0) -
モニタのロックを開放し、現在のスレッドを ブロックで指定した条件を満たすまで停止します。
モニタのロックを開放し、現在のスレッドを
ブロックで指定した条件を満たすまで停止します。
MonitorMixin::ConditionVariable#signal や
MonitorMixin::ConditionVariable#broadcast で
スレッドが起こされると、ロックを取得し、ブロックを評価し
その結果によってこのメソッドから抜け処理を継続するか
再びロックを開放しスレッドを停止するかを決めます。
@see MonitorMixin::ConditionVariable#wait -
MonitorMixin
:: ConditionVariable # wait _ while { . . . } -> () (60001.0) -
モニタのロックを開放し、現在のスレッドを ブロックで指定した条件を満たしている間停止します。
モニタのロックを開放し、現在のスレッドを
ブロックで指定した条件を満たしている間停止します。
MonitorMixin::ConditionVariable#signal や
MonitorMixin::ConditionVariable#broadcast で
スレッドが起こされると、ロックを取得し、ブロックを評価し
その結果によってこのメソッドから抜け処理を継続するか
再びロックを開放しスレッドを停止するかを決めます。
@raise ThreadError ロックを持っていないスレッドがこのメソッドを呼びだした場合に発生します
@see MonitorMixin::ConditionV... -
Socket
:: Constants :: IFF _ MONITOR (45652.0) -
user-requested monitor mode
user-requested monitor mode -
Socket
:: IFF _ MONITOR (36652.0) -
user-requested monitor mode
user-requested monitor mode -
NEWS for Ruby 2
. 7 . 0 (127.0) -
NEWS for Ruby 2.7.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。
NEWS for Ruby 2.7.0
このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。
それぞれのエントリーは参照情報があるため短いです。
十分な情報と共に書かれた全ての変更のリストは ChangeLog ファイルか bugs.ruby-lang.org の issue を参照してください。
== 2.6.0 以降の変更
=== 言語仕様の変更
==== パターンマッチ
* パターンマッチが実験的機能として導入されました。 14912
//emlist[][ruby]{
case [0, [1, 2, 3]]
in [a, [b... -
NEWS for Ruby 3
. 1 . 0 (109.0) -
NEWS for Ruby 3.1.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。
...能追加とバグ修正を除く)
* 以下のdefault gemsが更新されました。
* RubyGems 3.3.3
* base64 0.1.1
* benchmark 0.2.0
* bigdecimal 3.1.1
* bundler 2.3.3
* cgi 0.3.1
* csv 3.2.2
* date 3.2.2
* did_you_mean 1.6.1
* digest 3.1.0
* drb 2.1......。 12913
* Psych 4.0では、デフォルトで Psych.load が Psych.safe_load に変更されました。この動作に移行するにはPsych 3.3.2を使用する必要があるかもしれません。 17866
== C API の更新
* ドキュメント化されました。 https://github.com/ru...