別のキーワード
種類
- インスタンスメソッド (84)
- 特異メソッド (12)
- モジュール (12)
- クラス (12)
クラス
- Monitor (12)
- Mutex (2)
- Shell (6)
-
Shell
:: ProcessController (6) -
Thread
:: ConditionVariable (24) -
Thread
:: Mutex (10)
モジュール
- MonitorMixin (24)
-
Sync
_ m (12)
キーワード
- ConditionVariable (12)
- MonitorMixin (12)
-
block
_ output _ synchronize (6) - broadcast (12)
-
debug
_ output _ synchronize (6) -
mon
_ synchronize (18) - signal (12)
-
sync
_ synchronize (6)
検索結果
先頭5件
-
Mutex
# synchronize { . . . } -> object (18113.0) -
mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します。
...ロックを実行します。実行後に必ず mutex のロックを解放します。
ブロックが最後に評価した値を返します。
@raise ThreadError self 既にカレントスレッドにロックされている場合に発
生します。
ま......た、Signal.#trap に指定したハンドラ内で実行
した場合に発生します。
//emlist[例][ruby]{
m = Mutex.new
result = m.synchronize do
m.locked? # => true
# critical part
"result"
end
m.locked? # => false
result # => "result"
//}... -
Thread
:: Mutex # synchronize { . . . } -> object (18113.0) -
mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します。
...ロックを実行します。実行後に必ず mutex のロックを解放します。
ブロックが最後に評価した値を返します。
@raise ThreadError self 既にカレントスレッドにロックされている場合に発
生します。
ま......た、Signal.#trap に指定したハンドラ内で実行
した場合に発生します。
//emlist[例][ruby]{
m = Mutex.new
result = m.synchronize do
m.locked? # => true
# critical part
"result"
end
m.locked? # => false
result # => "result"
//}... -
Monitor
# synchronize { . . . } -> object (18108.0) -
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
...モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
ブロックの評価値を返り値として返します。
@see Monitor#enter... -
MonitorMixin
# synchronize { . . . } -> object (18108.0) -
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
...モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
ブロックの評価値を返り値として返します。
@see MonitorMixin#mon_enter... -
Sync
_ m # synchronize(mode = EX) { . . . } -> object (18108.0) -
ロック状態を変更してブロックを実行します。 ブロックの実行結果を返します。
...ロック状態を変更してブロックを実行します。
ブロックの実行結果を返します。
@param mode 変更後の状態を指定します。
通常、 Sync_m::UN, Sync_m::EX, Sync_m::SH のどれかを指定します。... -
Shell
. debug _ output _ synchronize (6129.0) -
@todo
...@todo
@see Mutex#synchronize......@todo
@see Thread::Mutex#synchronize... -
Shell
:: ProcessController . block _ output _ synchronize { . . . } -> () (6117.0) -
@todo
...@todo... -
Monitor
# mon _ synchronize { . . . } -> object (6108.0) -
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
...モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
ブロックの評価値を返り値として返します。
@see Monitor#enter... -
MonitorMixin
# mon _ synchronize { . . . } -> object (6108.0) -
モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
...モニターをロックし、ブロックを実行します。実行後に必ずモニターのロックを解放します。
ブロックの評価値を返り値として返します。
@see MonitorMixin#mon_enter... -
Sync
_ m # sync _ synchronize(mode = EX) { . . . } -> object (6108.0) -
ロック状態を変更してブロックを実行します。 ブロックの実行結果を返します。
...ロック状態を変更してブロックを実行します。
ブロックの実行結果を返します。
@param mode 変更後の状態を指定します。
通常、 Sync_m::UN, Sync_m::EX, Sync_m::SH のどれかを指定します。... -
Thread
:: ConditionVariable (114.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
...onVariable.new
a = Thread.start {
mutex.synchronize {
...
while (条件が満たされない)
cv.wait(mutex)
end
...
}
}
b = Thread.start {
mutex.synchronize {
# 上の条件を満たすための操......。@q が空になった場合、
あるいは満タンになった場合に Condition Variable を使って wait しています。
require 'thread'
class TinyQueue
def initialize(max=2)
@max = max
@full = ConditionVariable.new
@empty = ConditionVariable.new
@mutex......= Mutex.new
@q = []
end
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 co... -
MonitorMixin (30.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... -
Thread
:: ConditionVariable # broadcast -> self (18.0) -
状態変数を待っているスレッドをすべて再開します。再開された スレッドは Thread::ConditionVariable#wait で指定した mutex のロックを試みます。
...Variable#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)...