るりまサーチ

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

別のキーワード

  1. openssl t61string
  2. asn1 t61string
  3. t61string new
  4. matrix t
  5. fiddle align_size_t

ライブラリ

クラス

キーワード

検索結果

<< 1 2 > >>

Thread::SizedQueue#push(obj, non_block = false) -> () (18113.0)

キューに与えられたオブジェクトを追加します。

...キューに与えられたオブジェクトを追加します。

キューのサイズが Thread::SizedQueue#max に達している場合は、
non_block が真でなければ、キューのサイズが Thread::SizedQueue#max
より小さくなるまで他のスレッドに実行を譲ります...
...
その後、キューに与えられたオブジェクトを追加します。

@param obj キューに追加したいオブジェクトを指定します。
@param non_block true を与えると、キューが一杯の時に例外 ThreadError が発生します。

@see Thread::Queue#push...

Thread::SizedQueue#shift(non_block = false) -> object (6140.0)

キューからひとつ値を取り出します。 キューに push しようと待っているスレッドがあれば、実行を再開させます。

...ューに push しようと待っているスレッドがあれば、実行を再開させます。

@param non_block true を与えると、キューが空の時に例外 ThreadError が発生します。

//emlist[例][ruby]{
require 'thread'

q = SizedQueue.new(4)

t
h1 = Thread.start do
while r...
...q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].each{|r|
q.push(r)
}

t
h1.join
# => resource1
# resource2
# resource3
//}

//emlist[例: nonblock = true][ruby]{
require 'thread'

q = SizedQueue.new(4)

t
h1 = Thread.start do
while resource = q.pop
puts resource...
...end
end

[:resource1, :resource2, :resource3, nil].each{|r|
q.push(r)
}

begin
t
h1.join
q.pop(true)
rescue => e
p e
p e.message
end

# => resource1
# resource2
# resource3
# => #<ThreadError: queue empty>
# => "queue empty"
//}

@see Thread::Queue#pop...

Thread::Queue#shift(non_block = false) -> object (6124.0)

キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。

..._block true を与えると、キューが空の時に例外 ThreadError が発生します。

//emlist[例][ruby]{
require 'thread'

q = Queue.new

t
h1 = Thread.start do
while resource = q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}

t
h1.jo...
...in
//}

//emlist[例: nonblock = true][ruby]{
require 'thread'

q = Queue.new

t
h1 = Thread.start do
while resource = q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}

begin
t
h1.join
q.pop(true)
rescue => e
p e
end

# => resource1
# resour...
...ce2
# resource3
# => #<ThreadError: queue empty>
# => "queue empty"
//}...

Monitor (6012.0)

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

...る Mutex としての機能も提供します。

MonitorMixin を include し、いくつかの別名を定義したクラスです。

=== 例

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

buf = []
mon = Monitor.new
empty_cond = mon.new_cond

# consumer
T
hread.start do...
...ronize 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回ロックしてもデッドロックにならない例です。

//emlist[デッドロッ...
...'monitor'
mon = Monitor.new
mon.synchronize {
mon.synchronize {
}
}
//}

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

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

ruby 1.6 feature (3240.0)

ruby 1.6 feature ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン になります。

...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...
...。(((<ruby 1.7 feature>)) の 2002-06-24 も参照)

p "#{ "" # comment }"
=> ruby 1.6.8 (2002-10-04) [i586-linux]
""
=> -:1: parse error
ruby 1.7.3 (2002-10-04) [i586-linux]

: SizedQueue#deq, #shift
: SizedQueue#enq

追加(push, pop の別名)。...
...>))

((<Thread>))#run を呼ぶ直前にスレッドが死んでいた場合に ((<ThreadError>))
が発生する問題に対処しました。((<ruby-dev:13194>))

: Ctrl-C (Interrupt)が効かなくなる

((<ruby-dev:13195>))

t
h1 = Thread.start {
begin
T
hread.stop
e...

絞り込み条件を変える

Thread::SizedQueue#deq(non_block = false) -> object (3140.0)

キューからひとつ値を取り出します。 キューに push しようと待っているスレッドがあれば、実行を再開させます。

...ューに push しようと待っているスレッドがあれば、実行を再開させます。

@param non_block true を与えると、キューが空の時に例外 ThreadError が発生します。

//emlist[例][ruby]{
require 'thread'

q = SizedQueue.new(4)

t
h1 = Thread.start do
while r...
...q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].each{|r|
q.push(r)
}

t
h1.join
# => resource1
# resource2
# resource3
//}

//emlist[例: nonblock = true][ruby]{
require 'thread'

q = SizedQueue.new(4)

t
h1 = Thread.start do
while resource = q.pop
puts resource...
...end
end

[:resource1, :resource2, :resource3, nil].each{|r|
q.push(r)
}

begin
t
h1.join
q.pop(true)
rescue => e
p e
p e.message
end

# => resource1
# resource2
# resource3
# => #<ThreadError: queue empty>
# => "queue empty"
//}

@see Thread::Queue#pop...

Thread::SizedQueue#pop(non_block = false) -> object (3140.0)

キューからひとつ値を取り出します。 キューに push しようと待っているスレッドがあれば、実行を再開させます。

...ューに push しようと待っているスレッドがあれば、実行を再開させます。

@param non_block true を与えると、キューが空の時に例外 ThreadError が発生します。

//emlist[例][ruby]{
require 'thread'

q = SizedQueue.new(4)

t
h1 = Thread.start do
while r...
...q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].each{|r|
q.push(r)
}

t
h1.join
# => resource1
# resource2
# resource3
//}

//emlist[例: nonblock = true][ruby]{
require 'thread'

q = SizedQueue.new(4)

t
h1 = Thread.start do
while resource = q.pop
puts resource...
...end
end

[:resource1, :resource2, :resource3, nil].each{|r|
q.push(r)
}

begin
t
h1.join
q.pop(true)
rescue => e
p e
p e.message
end

# => resource1
# resource2
# resource3
# => #<ThreadError: queue empty>
# => "queue empty"
//}

@see Thread::Queue#pop...

Thread#join(limit) -> self | nil (3136.0)

スレッド self の実行が終了するまで、カレントスレッドを停止し ます。self が例外により終了していれば、その例外がカレントス レッドに対して発生します。

...ドに対して発生します。

limit を指定して、limit 秒過ぎても自身が終了しない場合、nil を返します。

@param limit タイムアウトする時間を整数か小数で指定します。単位は秒です。

@raise ThreadError join を実行することによって...
...

以下は、生成したすべてのスレッドの終了を待つ例です。

t
hreads = []
t
hreads.push(Thread.new { n = rand(5); sleep n; n })
t
hreads.push(Thread.new { n = rand(5); sleep n; n })
t
hreads.push(Thread.new { n = rand(5); sleep n; n })

t
hreads.each {|t| t.join}...

Thread::Queue#deq(non_block = false) -> object (3124.0)

キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。

..._block true を与えると、キューが空の時に例外 ThreadError が発生します。

//emlist[例][ruby]{
require 'thread'

q = Queue.new

t
h1 = Thread.start do
while resource = q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}

t
h1.jo...
...in
//}

//emlist[例: nonblock = true][ruby]{
require 'thread'

q = Queue.new

t
h1 = Thread.start do
while resource = q.pop
puts resource
end
end

[:resource1, :resource2, :resource3, nil].each { |r|
q.push(r)
}

begin
t
h1.join
q.pop(true)
rescue => e
p e
end

# => resource1
# resour...
...ce2
# resource3
# => #<ThreadError: queue empty>
# => "queue empty"
//}...
<< 1 2 > >>