別のキーワード
ライブラリ
クラス
- Monitor (12)
- Mutex (2)
-
PStore
:: DummyMutex (12) - Shell (6)
-
Shell
:: ProcessController (6) - Thread (12)
-
Thread
:: ConditionVariable (24) -
Thread
:: Mutex (10)
モジュール
- Etc (12)
- MonitorMixin (24)
-
Mutex
_ m (24) -
Sync
_ m (12)
キーワード
- ConditionVariable (12)
- Monitor (12)
- MonitorMixin (12)
- Mutex (12)
-
Mutex
_ m (12) -
NEWS for Ruby 2
. 0 . 0 (12) -
SC
_ SYNCHRONIZED _ IO (12) - Synchronizer (6)
-
Synchronizer
_ m (6) -
block
_ output _ synchronize (6) - broadcast (12)
-
debug
_ output _ synchronize (6) - exclusive (12)
-
mon
_ synchronize (18) - monitor (12)
-
mu
_ synchronize (12) - signal (12)
-
sync
_ synchronize (6)
検索結果
先頭5件
-
Sync
_ m # sync _ synchronize(mode = EX) { . . . } -> object (6102.0) -
ロック状態を変更してブロックを実行します。 ブロックの実行結果を返します。
ロック状態を変更してブロックを実行します。
ブロックの実行結果を返します。
@param mode 変更後の状態を指定します。
通常、 Sync_m::UN, Sync_m::EX, Sync_m::SH のどれかを指定します。 -
Shell
:: ProcessController . block _ output _ synchronize { . . . } -> () (6101.0) -
@todo
@todo -
Synchronizer (6000.0)
-
Alias of Sync
Alias of Sync -
Synchronizer
_ m (6000.0) -
Alias of Sync_m
Alias of Sync_m -
Etc
:: SC _ SYNCHRONIZED _ IO -> Integer (3100.0) -
Etc.#sysconf の引数に指定します。
Etc.#sysconf の引数に指定します。
詳細は sysconf(3) を参照してください。 -
Monitor (36.0)
-
スレッドの同期機構としてのモニター機能を提供するクラスです。 また同じスレッドから何度も lock できる Mutex としての機能も提供します。
...ew
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回ロック......uby]{
require 'monitor'
mon = Monitor.new
mon.synchronize {
mon.synchronize {
}
}
//}
Thread::Mutex ではデッドロックになります。
//emlist[Mutex でデッドロックになる例][ruby]{
mx = Mutex.new
mx.synchronize {
mx.synchronize {
}
}
# => deadlock; recursive locking (Thr... -
Thread
:: ConditionVariable (24.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
...onVariable.new
a = Thread.start {
mutex.synchronize {
...
while (条件が満たされない)
cv.wait(mutex)
end
...
}
}
b = Thread.start {
mutex.synchronize {
# 上の条件を満たすための操......d
def count
@q.size
end
def enq(v)
@mutex.synchronize{
@full.wait(@mutex) if count == @max
@q.push v
@empty.signal if count == 1
}
end
def deq
@mutex.synchronize{
@empty.wait(@mutex) if count == 0
v = @q.shift... -
MonitorMixin (18.0)
-
スレッドの同期機構としてのモニター機能を提供するモジュールです。
...を追加
empty_cond = buf.new_cond # 配列が空であるかないかを通知する条件変数
# consumer
Thread.start do
loop do
buf.synchronize do # ロックする
empty_cond.wait_while { buf.empty? } # 配列が空である間はロックを開放して待つ
print buf.shi......でなくなった後ロックを取得してこの行を実行
end # ロックを開放
end
end
# producer
while line = ARGF.gets
buf.synchronize do # ロックする
buf.push(line) # 配列を変更(追加)
empty_cond.signal # 配列に要素が追加されたことを条件変数......必要があります。
//emlist[include する例][ruby]{
require 'monitor'
class MyObject
include MonitorMixin
def initialize(val)
super()
@value = val
end
def to_s
synchronize {
@value.to_s
}
end
end
//}
以下も参考になります。
* 9384
* 9386... -
Mutex
_ m (12.0) -
スレッド同期機構である Mutex のモジュール版です。クラスに Module#include することでそのクラスに Mutex 機能を持たせることができます。 また、普通のオブジェクトを Object#extend により Mutex にする事ができます。
...tex_m#synchronize,
Mutex_m#locked?, Mutex_m#try_lock, Mutex_m#unlock)
はモジュールにincludeした場合には定義されません。
1991
=== 例
クラスに Module#include する例
require "mutex_m"
class Foo
include Mutex_m
...
end
obj = Foo.new
obj.synchronize do... -
NEWS for Ruby 2
. 0 . 0 (12.0) -
NEWS for Ruby 2.0.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。
...在のスレッドに所持されているかどうかを返します
* 非互換:
* Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize, Mutex#sleep
はトラップハンドラの中では使えなくなりました。そのようなときは ThreadError が発生しま......lize_dup
* private になりました
* Thread#join, Thread#value
* 上を参照
* Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize, Mutex#sleep
* 上を参照
=== 標準添付ライブラリの更新 (優れたもののみ)
* cgi
* HTML5 用のタグメーカー... -
Thread
:: ConditionVariable # broadcast -> self (12.0) -
状態変数を待っているスレッドをすべて再開します。再開された スレッドは Thread::ConditionVariable#wait で指定した mutex のロックを試みます。
...w
cv = ConditionVariable.new
flg = true
3.times {
Thread.start {
mutex.synchronize {
puts "a1"
while (flg)
cv.wait(mutex)
end
puts "a2"
}
}
}
Thread.start {
mutex.synchronize {
flg = false
cv.broadcast
}
}
sleep 1
# => a1
# => a1
# => a1
#...