るりまサーチ

最速Rubyリファレンスマニュアル検索!
92件ヒット [1-92件を表示] (0.033秒)

別のキーワード

  1. スレッド thread
  2. スレッド
  3. スレッド spec/terminate
  4. スレッド spec/rubycmd

ライブラリ

クラス

モジュール

キーワード

検索結果

monitor (38086.0)

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

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

モニターとは、一つの Mutex とそれに関連付けられた複数の
条件変数から構成さ...
...れた、スレッドの同期機構です。
Mutex と 条件変数によって同等の機能を実現することは
可能ですが、モニタの利点はライブラリがその関連を保証
していることです。

monitor
は以下のような Mutex としての機能も提供します...
...ck していたら ただ yield するだけ (lock/unlockもしない)
* unlock はそのスレッドだけができる

30447 より。

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

=== 参照

* 6829
* 30447
* 304...
...れた、スレッドの同期機構です。
Mutex と 条件変数によって同等の機能を実現することは
可能ですが、モニタの利点はライブラリがその関連を保証
していることです。

monitor
は以下のような Thread::Mutex としての機能も提供...
...します。
* lock の持ち主がスレッドである Mutex / 何度も lock できる Mutex
* lock したスレッドを Mutex 側が覚えていて
* そのスレッドがもう一度 lock しようとしてもブロックしない
* synchronize は lock していなかったら...

Thread.exclusive { ... } -> object (21042.0)

VM グローバルの Mutex をロックし、ブロックを実行します。

...の挙動は 1.8 以前とは違います。
Thread
.exclusive は VM グローバルの Thread::MUTEX_FOR_THREAD_EXCLUSIVE の
synchronize を呼び出しているだけで、Thread.exclusive していないスレッドは動きます。
Mutex や Monitor などの他の排他制御の方法を検...
...挙動は 1.8 以前とは違います。
Thread
.exclusive は VM グローバルの Thread::MUTEX_FOR_THREAD_EXCLUSIVE の
synchronize を呼び出しているだけで、Thread.exclusive していないスレッドは動きます。
Thread
::Mutex や Monitor などの他の排他制御の方法を...
...ソッドの挙動は 1.8 以前とは違います。
Thread
.exclusive は VM グローバルの Mutex の
synchronize を呼び出しているだけで、Thread.exclusive していないスレッドは動きます。
Thread
::Mutex や Monitor などの他の排他制御の方法を検討してく...

Monitor#enter -> () (17054.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)
//}...

Monitor#mon_enter -> () (17054.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)
//}...

Monitor#enter -> () (17042.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 -> () (17030.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)
//}...
...
スレッド
が一つ実行を再開します。

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

//emlist[例][ruby]{
require 'monitor'
mon = Monitor.new
mon.enter
mon.enter
mon.exit
mon.exit
mon.exit # => current thread not owner (ThreadErr...

Monitor#mon_exit -> () (17030.0)

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

...
スレッド
が一つ実行を再開します。

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

//emlist[例][ruby]{
require 'monitor'
mon = Monitor.new
mon.enter
mon.enter
mon.exit
mon.exit
mon.exit # => current thread not owner (ThreadErr...

Monitor (14068.0)

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

...スレッドの同期機構としてのモニター機能を提供するクラスです。
また同じスレッドから何度も 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.s...
...uire 'monitor'
mon = Monitor.new
mon.synchronize {
mon.synchronize {
}
}
//}

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

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

MonitorMixin (14040.0)

スレッドの同期機構としてのモニター機能を提供するモジュールです。

...スレッドの同期機構としてのモニター機能を提供するモジュールです。

クラスに Module#include したり、オブジェクトに
Object#extend したりすることでそのクラス/オブジェクトに
モニタ機能を追加します。

=== 例

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

buf = []
buf.extend(MonitorMixin) # 配列にモニタ機能を追加
empty_cond = buf.new_cond # 配列が空であるかないかを通知する条件変数

# consumer
Thread
.start do
loop do
buf.synchronize do # ロックする
e...
...= 初期化

Monitor
Mixin は初期化される必要があります。
上の例のように Object#extend を使って利用する場合は
自動的に初期化されます。

//emlist[extend する例][ruby]{
require 'monitor'
buf = []
buf.extend(MonitorMixin)
//}

しかし、MonitorMixin を...

MonitorMixin#mon_enter -> () (11030.0)

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

...ターをロックします。

一度に一つのスレッドだけがモニターをロックできます。
既にモニターがロックされている場合は、ロックが開放されるまで
そのスレッドは待ちます。

Thread
::Mutex#lock に相当します。
Mutex#lock と違...
...が現在実行されているスレッドである場合、
何度でもロックできる点です。ロックした回数だけ mon_exit を呼ばなければモニターは
解放されません。

//emlist[例][ruby]{
require 'monitor'
buf = []
buf.extend(MonitorMixin)
buf.mon_enter
buf.mon_en...
...ter
//}

Mutex#lock ではデッドロックが起きます。

//emlist[Mutex でデッドロックする例][ruby]{
m = Mutex.new
m.lock
m.lock # => deadlock; recursive locking (ThreadError)
//}...

絞り込み条件を変える

NEWS for Ruby 2.7.0 (36.0)

NEWS for Ruby 2.7.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

...ールしてください。
* CMath (cmath gem)
* Scanf (scanf gem)
* Shell (shell gem)
* Synchronizer (sync gem)
* ThreadsWait (thwait gem)
* E2MM (e2mmap gem)

* Proc
* Proc#to_sの形式が変更されました。 16101

* Range
* Range#minmaxが最...
...ext
* singleton
* 以下のdefault gemはruby-coreでの変更のみで、まだrubygems.orgでは公開されていません。
* monitor
* observer
* timeout
* tracer
* uri
* yaml
* did_you_mean gemはbundled gemからdefault gemになりました。...
...ータ構造が変わりました。 15602

* Monitor
* MonitorクラスがC拡張になりました。 16255

* Thread
* VMスタックのメモリ確保はネイティブスレッドのスタックと同時になり、
スレッド
アロケーションのパフォーマンスが...