るりまサーチ

最速Rubyリファレンスマニュアル検索!
327件ヒット [1-100件を表示] (0.126秒)
トップページ > クエリ:I[x] > クエリ:Monitor[x] > クエリ:monitor[x]

別のキーワード

  1. socket iff_monitor
  2. monitor enter
  3. monitor exit
  4. monitor new
  5. monitor try_enter

ライブラリ

クラス

モジュール

検索結果

<< 1 2 3 ... > >>

Monitor (58048.0)

スレッドの同期機構としてのモニター機能を提供するクラスです。 また同じスレッドから何度も lock できる Mutex としての機能も提供します。

...します。

Monitor
Mixin を include し、いくつかの別名を定義したクラスです。

=== 例

//emlist[消費者、生産者問題の例][ruby]{
require 'monitor'

buf = []
mon = Monitor.new
empty_cond = mon.new_cond

# consumer
Thread.start do
loop do
mon.synchronize do...
...empty_cond.wait_while { buf.empty? }
print buf.shift
end
end
end

# producer
while line = ARGF.gets
mon.synchronize do
buf.push(line)
empty_cond.signal
end
end
//}

2回ロックしてもデッドロックにならない例です。

//emlist[デッドロックにならない...
...by]{
require 'monitor'
mon = Monitor.new
mon.synchronize {
mon.synchronize {
}
}
//}

Thread::Mutex ではデッドロックになります。

//emlist[Mutex でデッドロックになる例][ruby]{
mx = Mutex.new
mx.synchronize {
mx.synchronize {
}
}
# => deadlock; recursive locking (Thre...

monitor (50012.0)

スレッドの同期機構としてのモニター機能を提供するクラスです。 また同じスレッドから何度も lock できる Mutex としての機能も提供します。

...同等の機能を実現することは
可能ですが、モニタの利点はライブラリがその関連を保証
していることです。

monitor
は以下のような Mutex としての機能も提供します。
* lock の持ち主がスレッドである Mutex / 何度も lock でき...
...onize は lock していなかったら通常どおり、
自分が lock していたら ただ yield するだけ (lock/unlockもしない)
* unlock はそのスレッドだけができる

30447 より。

よりプリミティブな同期機構として、
Mutex、Thread::ConditionVaria...
...同等の機能を実現することは
可能ですが、モニタの利点はライブラリがその関連を保証
していることです。

monitor
は以下のような Thread::Mutex としての機能も提供します。
* lock の持ち主がスレッドである Mutex / 何度も lock...
...nize は lock していなかったら通常どおり、
自分が lock していたら ただ yield するだけ (lock/unlockもしない)
* unlock はそのスレッドだけができる

30447 より。

よりプリミティブな同期機構として、
Thread::Mutex、Thread::Conditi...
...onVariable も参照してください。

=== 参照

* 6829
* 30447
* 30449...

Monitor#exit -> () (47124.0)

モニターのロックを解放します。

...MonitorMixin#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 -> () (47124.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#wait_for_cond(cond, timeout) -> bool (47124.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_cond(cv, 1)
//}...

絞り込み条件を変える

Monitor#wait_for_cond(cond, timeout) -> true (47124.0)

MonitorMixin::ConditionVariable 用の内部メソッドです。

...MonitorMixin::ConditionVariable 用の内部メソッドです。

@param cond Thread::ConditionVariable を指定します。
@param timeout タイムアウトまでの秒数。指定しなかった場合はタイムアウトしません。

@return Ruby 1.9 の頃からのバグで常に true を...
...返します。(16608)

//emlist[例][ruby]{
require 'monitor'
m = Monitor.new
cv = Thread::ConditionVariable.new
m.enter
m.wait_for_cond(cv, 1)
//}...

Monitor#mon_synchronize { ... } -> object (44112.0)

モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。

...モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。

ブロックの評価値を返り値として返します。

@see Monitor#enter...

Monitor#synchronize { ... } -> object (44112.0)

モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。

...モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。

ブロックの評価値を返り値として返します。

@see Monitor#enter...

Monitor#new_cond -> MonitorMixin::ConditionVariable (41400.0)

モニターに関連付けられた、新しい MonitorMixin::ConditionVariable を生成して返します。

...モニターに関連付けられた、新しい MonitorMixin::ConditionVariable を生成して返します。...

Monitor.new -> Monitor (41334.0)

新しい Monitor オブジェクトを生成します。

...新しい Monitor オブジェクトを生成します。...

絞り込み条件を変える

Monitor#mon_check_owner -> nil (41100.0)

MonitorMixin 用の内部メソッドです。

...MonitorMixin 用の内部メソッドです。

@raise ThreadError ロックを持っていないスレッドが呼びだした場合に発生します...

Monitor#enter -> () (41036.0)

MonitorMixin#mon_enter の別名です。

...MonitorMixin#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)
//}...
...です。ロックした回数だけ 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)
//}...

Monitor#mon_enter -> () (41036.0)

モニターをロックします。

...です。ロックした回数だけ 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)
//}...

Monitor#mon_locked? -> bool (41000.0)

モニターがロックされているときに true を返します。

モニターがロックされているときに true を返します。

Monitor#mon_owned? -> bool (41000.0)

カレントスレッドがモニターをロックしているときに true を返します。

カレントスレッドがモニターをロックしているときに true を返します。

絞り込み条件を変える

<< 1 2 3 ... > >>