29件ヒット
[1-29件を表示]
(0.049秒)
ライブラリ
- ビルトイン (29)
キーワード
- ConditionVariable (9)
- SizedQueue (9)
- ThreadGroup (11)
検索結果
-
Thread
:: ConditionVariable (8055.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
...レッド a に対して条件が成立したことを通知します。これが典型的な
使用例です。
mutex = Mutex.new
cv = ConditionVariable.new
a = Thread.start {
mutex.synchronize {
...
while (条件が満たされない)
cv.wait(m......tion 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 e......E__ == $0
q = TinyQueue.new(1)
foods = 'Apple Banana Strawberry Udon Rice Milk'.split
l = []
th = Thread.new {
for obj in foods
q.send(obj)
print "sent ", obj, "\n"
end
q.send nil
}
l.push th
th = Thread.new {
while obj = q.recv... -
ThreadGroup (8037.0)
-
スレッドグループを表すクラスです。グループに属する Thread をまとめて 操作することができます。
...す。
: 例:
生成したすべてのThreadが終了するのを待つ
5.times {
Thread.new { sleep 1; puts "#{Thread.current} finished" }
}
(ThreadGroup::Default.list - [Thread.current]).each {|th| th.join}
puts "all threads finished"
対象の Thread が Threa......(ThreadGroup::Default.list - [Thread.current]).each {|th| th.join}
end
=== ThreadGroup#freeze と ThreadGroup#enclose の違い
どちらのメソッドでも ThreadGroup#add によるスレッドの追加ができなくなる点は同じですが、
Thread.new に関して違いがあ......す。現在のスレッドが属する ThreadGroup が freeze
されている場合、Thread.new{ ... } はエラーになります。ThreadGroup が enclose されているだけでは、
Thread.new{ ... } はエラーになりません。生成されたスレッドは従来通り 親スレッド... -
Thread
:: SizedQueue (8013.0) -
サイズの最大値を指定できる Thread::Queue です。
...れる行が同じ順序になります。
q = [] にすると入力と違った順序で行が出力されます。
require 'thread'
q = SizedQueue.new(1)
th = Thread.start {
while line = q.pop
print line
end
}
while l = gets
q.push(l)
end
q.push(l)
th.join...