クラス
- Monitor (1)
- PStore (1)
-
PStore
:: DummyMutex (1) - Shell (6)
- Thread (2)
-
Thread
:: ConditionVariable (3) -
Thread
:: Mutex (8) - Tracer (1)
モジュール
- MonitorMixin (1)
-
Mutex
_ m (14) - ObjectSpace (1)
キーワード
- ConditionVariable (1)
- DummyMutex (1)
-
MUTEX
_ FOR _ THREAD _ EXCLUSIVE (1) - Monitor (1)
-
Mutex
_ m (1) -
NEWS for Ruby 2
. 0 . 0 (1) -
NEWS for Ruby 2
. 1 . 0 (1) -
append
_ features (1) - broadcast (1)
-
count
_ tdata _ objects (1) -
debug
_ output _ exclusive _ unlock (1) -
debug
_ output _ lock (1) -
debug
_ output _ locked? (1) -
debug
_ output _ synchronize (1) -
debug
_ output _ try _ lock (1) -
debug
_ output _ unlock (1) -
define
_ aliases (1) - enter (1)
- exclusive (1)
-
extend
_ object (1) - lock (2)
- locked? (2)
-
mon
_ enter (1) - monitor (1)
-
mu
_ extended (1) -
mu
_ lock (1) -
mu
_ locked? (1) -
mu
_ synchronize (1) -
mu
_ try _ lock (1) -
mu
_ unlock (1) -
mutex
_ m (1) - new (2)
- owned? (1)
-
ruby 1
. 6 feature (1) - signal (1)
- sleep (1)
-
stdout
_ mutex (1) - synchronize (3)
-
try
_ lock (2) - unlock (2)
- wait (1)
検索結果
先頭5件
-
Mutex (114049.0)
-
Alias of Thread::Mutex
Alias of Thread::Mutex -
Thread
:: Mutex (54145.0) -
Mutex(Mutal Exclusion = 相互排他ロック)は共有データを並行アクセスから保護する ためにあります。Mutex の典型的な使い方は(m を Mutex オブジェクトとします):
Mutex(Mutal Exclusion = 相互排他ロック)は共有データを並行アクセスから保護する
ためにあります。Mutex の典型的な使い方は(m を Mutex オブジェクトとします):
m.lock
begin
# m によって保護されたクリティカルセクション
ensure
m.unlock
end
または、より簡単に
m.synchronize {
# m によって保護されたクリティカルセクション
} -
Thread
:: MUTEX _ FOR _ THREAD _ EXCLUSIVE -> Mutex (18655.0) -
Thread.exclusive用のMutexオブジェクトです。
Thread.exclusive用のMutexオブジェクトです。 -
Tracer
. stdout _ mutex -> Mutex (18607.0) -
@todo
@todo -
Mutex
_ m (18307.0) -
スレッド同期機構である Thread::Mutex のモジュール版です。クラスに Module#include することでそのクラスに Mutex 機能を持たせることができます。 また、普通のオブジェクトを Object#extend により Mutex にする事ができます。
スレッド同期機構である Thread::Mutex のモジュール版です。クラスに
Module#include することでそのクラスに Mutex 機能を持たせることができます。
また、普通のオブジェクトを Object#extend により Mutex にする事ができます。
このモジュールによるロックは再入不可能です。再入可能な同等品が必要な場合は
Sync_m の利用を考えてください。
「mu_」の付かないメソッド(Mutex_m#lock, Mutex_m#synchronize,
Mutex_m#locked?, Mutex_m#try_lock, Mutex_m#unlock)... -
mutex
_ m (18049.0) -
スレッド同期機構である Mutex のモジュール版を提供するライブラリです。
スレッド同期機構である Mutex のモジュール版を提供するライブラリです。 -
PStore
:: DummyMutex (18001.0) -
ダミーのミューテックス。このクラスを使ってもスレッドセーフにはなりません。
ダミーのミューテックス。このクラスを使ってもスレッドセーフにはなりません。 -
Mutex
_ m # mu _ extended -> Mutex (9352.0) -
Mutex_m.extend_object から呼び出されます。 ユーザが直接使うことはありません。
Mutex_m.extend_object から呼び出されます。
ユーザが直接使うことはありません。 -
Thread
:: Mutex . new -> Thread :: Mutex (9352.0) -
新しい mutex を生成して返します。
新しい mutex を生成して返します。 -
Thread
:: Mutex # lock -> self (9211.0) -
mutex オブジェクトをロックします。一度に一つのス レッドだけが mutex をロックできます。既にロックされている mutex に対してロックを行おうとしたスレッドは mutex のロックが解放さ れるまで、実行が停止されます。
mutex オブジェクトをロックします。一度に一つのス
レッドだけが mutex をロックできます。既にロックされている mutex
に対してロックを行おうとしたスレッドは mutex のロックが解放さ
れるまで、実行が停止されます。
@raise ThreadError self 既にカレントスレッドにロックされている場合に発
生します。
また、Signal.#trap に指定したハンドラ内で実行
した場合に発生します。
@see Thread::Mutex#unlock
... -
Thread
:: Mutex # unlock -> self (9151.0) -
mutex のロックを解放します。mutex のロック待ちになっていたスレッドの実行は再開されます。
mutex のロックを解放します。mutex のロック待ちになっていたスレッドの実行は再開されます。
@return self を返します。
例:
m = Mutex.new
begin
m.lock
# critical part
ensure
m.unlock
end
Mutex はロックしたスレッド以外からロックを開放することは出来ません。
ロックしたスレッド以外から unlock が呼ばれると ThreadError が発生します。
m = Mutex.new
m.lock
Thread.new do
m.unlock # => Thr... -
Thread
:: Mutex # synchronize { . . . } -> object (9115.0) -
mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します。
mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します。
ブロックが最後に評価した値を返します。
@raise ThreadError self 既にカレントスレッドにロックされている場合に発
生します。
また、Signal.#trap に指定したハンドラ内で実行
した場合に発生します。
//emlist[例][ruby]{
m = Mutex.new
result = m.synchronize do
m.locked? # =>... -
Thread
:: Mutex # locked? -> bool (9067.0) -
mutex がロックされている時、真を返します。
mutex がロックされている時、真を返します。
//emlist[例][ruby]{
m = Mutex.new
m.locked? # => false
m.lock
m.locked? # => true
//} -
Thread
:: Mutex # try _ lock -> bool (9067.0) -
mutex をロックしようとして、ロックが成功した場合、真を返します。 ロックできなかった場合にはブロックせず偽を返します。
mutex をロックしようとして、ロックが成功した場合、真を返します。
ロックできなかった場合にはブロックせず偽を返します。
//emlist[例][ruby]{
m = Mutex.new
m.try_lock # => true
m.try_lock # => false
//} -
Mutex
_ m # lock -> () (9049.0) -
self をロックします。一度にひとつのスレッドしかロックできません。 既にロックされている mutex に対してロックを行おうとしたスレッドは ロックが解放されるまで、実行が停止されます。
self をロックします。一度にひとつのスレッドしかロックできません。
既にロックされている mutex に対してロックを行おうとしたスレッドは
ロックが解放されるまで、実行が停止されます。 -
Mutex
_ m # mu _ lock -> () (9049.0) -
self をロックします。一度にひとつのスレッドしかロックできません。 既にロックされている mutex に対してロックを行おうとしたスレッドは ロックが解放されるまで、実行が停止されます。
self をロックします。一度にひとつのスレッドしかロックできません。
既にロックされている mutex に対してロックを行おうとしたスレッドは
ロックが解放されるまで、実行が停止されます。 -
Thread
:: Mutex # owned? -> bool (9019.0) -
self がカレントスレッドによってロックされている場合に true を返します。 そうでない場合に false を返します。
self がカレントスレッドによってロックされている場合に true を返します。
そうでない場合に false を返します。
//emlist[例][ruby]{
m = Mutex.new
m.owned? # => false
m.lock
Thread.new do
m.owned? # => false
end.join
m.owned? # => true
//} -
Thread
:: Mutex # sleep(timeout = nil) -> Integer (9019.0) -
与えられた秒数の間ロックを解除してスリープして、実行後にまたロックします。
与えられた秒数の間ロックを解除してスリープして、実行後にまたロックします。
@param timeout スリープする秒数を指定します。省略するとスリープし続けます。
@return スリープしていた秒数を返します。
@raise ThreadError 自身がカレントスレッドによってロックされていない場合に発生します。
[注意] 2.0 以降ではスリープ中でも、シグナルを受信した場合などに実行が再
開(spurious wakeup)される場合がある点に注意してください。
//emlist[例][ruby]{
m = Mutex.new
th = Thread.new do
... -
Mutex
_ m # locked? -> bool (9001.0) -
self がロックされている時、真を返します。
self がロックされている時、真を返します。 -
Mutex
_ m # mu _ locked? -> bool (9001.0) -
self がロックされている時、真を返します。
self がロックされている時、真を返します。 -
Mutex
_ m # mu _ synchronize { . . . } -> object (9001.0) -
self のロックを取得し、ブロックを実行します。実行後に必ずロックを解放します。
self のロックを取得し、ブロックを実行します。実行後に必ずロックを解放します。
ブロックで最後に評価した値を返します。 -
Mutex
_ m # mu _ try _ lock -> bool (9001.0) -
self をロックしようとして、成功した場合、真を返し、ロックを得ます。
self をロックしようとして、成功した場合、真を返し、ロックを得ます。
ロックできなかった場合にはブロックせず偽を返します。 -
Mutex
_ m # mu _ unlock -> () (9001.0) -
ロックを解放します。ロック待ちになっていたスレッドの実行は再開されます。
ロックを解放します。ロック待ちになっていたスレッドの実行は再開されます。
@raise ThreadError ロックされていない場合に unlock を呼ぶと発生します -
Mutex
_ m # synchronize { . . . } -> object (9001.0) -
self のロックを取得し、ブロックを実行します。実行後に必ずロックを解放します。
self のロックを取得し、ブロックを実行します。実行後に必ずロックを解放します。
ブロックで最後に評価した値を返します。 -
Mutex
_ m # try _ lock -> bool (9001.0) -
self をロックしようとして、成功した場合、真を返し、ロックを得ます。
self をロックしようとして、成功した場合、真を返し、ロックを得ます。
ロックできなかった場合にはブロックせず偽を返します。 -
Mutex
_ m # unlock -> () (9001.0) -
ロックを解放します。ロック待ちになっていたスレッドの実行は再開されます。
ロックを解放します。ロック待ちになっていたスレッドの実行は再開されます。
@raise ThreadError ロックされていない場合に unlock を呼ぶと発生します -
Mutex
_ m . append _ features(klass) -> Class | nil (9001.0) -
ユーザが直接、使うことはありません。
ユーザが直接、使うことはありません。
@see Module#append_features -
Mutex
_ m . define _ aliases(klass) -> Class (9001.0) -
ユーザが直接、使うことはありません。
ユーザが直接、使うことはありません。 -
Mutex
_ m . extend _ object(module) -> Module (9001.0) -
ユーザが直接、使うことはありません。
ユーザが直接、使うことはありません。
@see Module#extend_object -
PStore
:: DummyMutex # synchronize { . . . } -> object (9001.0) -
与えられたブロックを評価するだけで何もしません。
与えられたブロックを評価するだけで何もしません。 -
Thread
:: ConditionVariable # wait(mutex , timeout = nil) -> self (436.0) -
mutex のロックを解放し、カレントスレッドを停止します。 Thread::ConditionVariable#signalまたは、 Thread::ConditionVariable#broadcastで送られたシグナルを 受け取ると、mutexのロックを取得し、実行状態となります。
mutex のロックを解放し、カレントスレッドを停止します。
Thread::ConditionVariable#signalまたは、
Thread::ConditionVariable#broadcastで送られたシグナルを
受け取ると、mutexのロックを取得し、実行状態となります。
@param mutex Mutex オブジェクトを指定します。
@param timeout スリープする秒数を指定します。この場合はシグナルを受け取
らなかった場合でも指定した秒数が経過するとスリープを終了
します。省略するとスリープし続け... -
Shell
. debug _ output _ exclusive _ unlock { . . . } -> Mutex | nil (322.0) -
@todo
@todo
@see Mutex#exclusive_unlock -
Shell
. debug _ output _ lock -> Mutex (322.0) -
@todo
@todo
@see Thread::Mutex#lock -
Shell
. debug _ output _ unlock -> Mutex | nil (322.0) -
@todo
@todo
@see Thread::Mutex#unlock -
NEWS for Ruby 2
. 0 . 0 (253.0) -
NEWS for Ruby 2.0.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。
NEWS for Ruby 2.0.0
このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。
それぞれのエントリーは参照情報があるため短いです。
十分な情報と共に書かれた全ての変更のリストは ChangeLog ファイルか bugs.ruby-lang.org の issue を参照してください。
== 1.9.3 以降の変更
=== 言語仕様の変更
* キーワード引数を追加しました
* %i, %I をシンボルの配列作成のために追加しました。(%w, %W に似ています)
* デフォルトのソースエンコーディングを US-ASCI... -
Thread
:: ConditionVariable (199.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
スレッドの同期機構の一つである状態変数を実現するクラスです。
以下も ConditionVariable を理解するのに参考になります。
https://ruby-doc.com/docs/ProgrammingRuby/html/tut_threads.html#UF
=== Condition Variable とは
あるスレッド A が排他領域で動いていたとします。スレッド A は現在空いていない
リソースが必要になったので空くまで待つことにしたとします。これはうまくいきません。
なぜなら、スレッド A は排他領域で動いているわけですから、他のスレッドは動くことが
できません。リ... -
monitor (175.0)
-
スレッドの同期機構としてのモニター機能を提供するクラスです。 また同じスレッドから何度も lock できる Mutex としての機能も提供します。
スレッドの同期機構としてのモニター機能を提供するクラスです。
また同じスレッドから何度も lock できる Mutex としての機能も提供します。
モニターとは、一つの Mutex とそれに関連付けられた複数の
条件変数から構成された、スレッドの同期機構です。
Mutex と 条件変数によって同等の機能を実現することは
可能ですが、モニタの利点はライブラリがその関連を保証
していることです。
monitor は以下のような Thread::Mutex としての機能も提供します。
* lock の持ち主がスレッドである Mutex / 何度も lock できる Mutex
* l... -
Thread
:: ConditionVariable # broadcast -> self (139.0) -
状態変数を待っているスレッドをすべて再開します。再開された スレッドは 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)
... -
Thread
:: ConditionVariable # signal -> self (139.0) -
状態変数を待っているスレッドを1つ再開します。再開された スレッドは Thread::ConditionVariable#wait で指定した mutex のロックを試みます。
状態変数を待っているスレッドを1つ再開します。再開された
スレッドは 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)
... -
ruby 1
. 6 feature (127.0) -
ruby 1.6 feature ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン になります。
ruby 1.6 feature
ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン
になります。
((<stable-snapshot|URL:ftp://ftp.netlab.co.jp/pub/lang/ruby/stable-snapshot.tar.gz>)) は、日々更新される安定版の最新ソースです。
== 1.6.8 (2002-12-24) -> stable-snapshot
: 2003-01-22: errno
EAGAIN と EWOULDBLOCK が同じ値のシステムで、EWOULDBLOCK がなくなっ
ていま... -
Monitor (103.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 -> () (91.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[Mu... -
MonitorMixin
# mon _ enter -> () (91.0) -
モニターをロックします。
モニターをロックします。
一度に一つのスレッドだけがモニターをロックできます。
既にモニターがロックされている場合は、ロックが開放されるまで
そのスレッドは待ちます。
Thread::Mutex#lock に相当します。
Mutex#lock と違うのは現在のモニターの所有者が現在実行されているスレッドである場合、
何度でもロックできる点です。ロックした回数だけ mon_exit を呼ばなければモニターは
解放されません。
//emlist[例][ruby]{
require 'monitor'
buf = []
buf.extend(MonitorMixin)
buf.mon_ent... -
Thread
. exclusive { . . . } -> object (85.0) -
VM グローバルの Mutex をロックし、ブロックを実行します。
VM グローバルの Mutex をロックし、ブロックを実行します。
このクラスメソッドの挙動は 1.8 以前とは違います。
Thread.exclusive は VM グローバルの Thread::MUTEX_FOR_THREAD_EXCLUSIVE の
synchronize を呼び出しているだけで、Thread.exclusive していないスレッドは動きます。
Thread::Mutex や Monitor などの他の排他制御の方法を検討してください。 -
NEWS for Ruby 2
. 1 . 0 (37.0) -
NEWS for Ruby 2.1.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。
NEWS for Ruby 2.1.0
このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。
それぞれのエントリーは参照情報があるため短いです。
十分な情報と共に書かれた全ての変更のリストは ChangeLog ファイルか bugs.ruby-lang.org の issue を参照してください。
== 2.0.0 以降の変更
=== 言語仕様の変更
* キーワード引数のデフォルト値が省略可能になりました。これらの「必須キーワード引数」は呼び出し時に明示的に与えなければなりません。
* 整数や小数のリテラルの末尾に'r','i','... -
ObjectSpace
. # count _ tdata _ objects(result _ hash = nil) -> Hash (37.0) -
T_DATA の種類ごとにオブジェクトの数を格納したハッシュを返します。
T_DATA の種類ごとにオブジェクトの数を格納したハッシュを返します。
@param result_hash 戻り値のためのハッシュを指定します。省略した場合は新
しくハッシュを作成します。result_hash の内容は上書き
されます。プローブ効果を避けるために使用します。
@raise TypeError result_hash にハッシュ以外を指定した時に発生します。
本メソッドは普通の Ruby プログラマ向けのメソッドではありません。パフォー
マンスに興味のある C Ruby の開発者向けのもので... -
PStore
. new(file , thread _ safe = false) -> PStore (19.0) -
ファイル名 file に対してデータベースを読み書きします。
ファイル名 file に対してデータベースを読み書きします。
データベースを更新するときにバックアップファイルが作成されるため、
file のあるディレクトリは書き込み可能である必要があります。
データベースの更新が成功すると、バックアップファイルは削除されます。バックアップファイル名は
ファイル名に ".tmp" および ".new" を付けたものです。
@param file データベースファイル名。
@param thread_safe 真を指定すると Thread::Mutex を用いてスレッドセーフになります。
デフォルトは偽です。 -
Shell
. debug _ output _ locked? -> bool (19.0) -
@todo
@todo
@see Thread::Mutex#locked? -
Shell
. debug _ output _ synchronize (19.0) -
@todo
@todo
@see Thread::Mutex#synchronize -
Shell
. debug _ output _ try _ lock -> bool (19.0) -
@todo
@todo
@see Thread::Mutex#try_lock