るりまサーチ

最速Rubyリファレンスマニュアル検索!
52件ヒット [1-52件を表示] (0.013秒)
トップページ > クエリ:q[x] > ライブラリ:thread[x]

別のキーワード

  1. socket iff_802_1q_vlan
  2. openssl q
  3. openssl q=
  4. rsa q
  5. dsa q

クラス

キーワード

検索結果

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

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

...例外 ThreadError が発生します。

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

q
= Queue.new

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

th1.join
//}

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

q
= Queue.new

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

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

# => resource1
# resource2
# resource3
# => #<ThreadError: queue empty>
# => "queu...

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

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

...と、キューが空の時に例外 ThreadError が発生します。

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

q
= SizedQueue.new(4)

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

th1.join
# => resource1...
...rce3
//}

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

q
= SizedQueue.new(4)

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

begin
th1.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#enq(value) -> () (6102.0)

キューの値を追加します。待っているスレッドがいれば実行を再開 させます。返り値は不定です。

キューの値を追加します。待っているスレッドがいれば実行を再開
させます。返り値は不定です。

Thread::SizedQueue#enq(obj) -> () (6102.0)

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

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

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

@param obj キューに追加したいオブジェクトを指定します。

@see Thread::Queue#push...

Thread::SizedQueue#enq(obj, non_block = false) -> () (6102.0)

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

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

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

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

@see Thread::Queue#push...

絞り込み条件を変える

Thread::SizedQueue (6038.0)

サイズの最大値を指定できる Thread::Queue です。

... Thread::Queue です。

=== 例

283 より。q をサイズ 1 の SizedQueue オブジェクトに
することによって、入力される行と出力される行が同じ順序になります。
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...

Thread::Queue (6020.0)

Queue はスレッド間の FIFO(first in first out) の通信路です。ス レッドが空のキューを読み出そうとすると停止します。キューになんら かの情報が書き込まれると実行は再開されます。

...Queue はスレッド間の FIFO(first in first out) の通信路です。ス
レッドが空のキューを読み出そうとすると停止します。キューになんら
かの情報が書き込まれると実行は再開されます。

最大サイズが指定できる Queue のサブクラ...
... Thread::SizedQueue も提供されています。

=== 例

require 'thread'

q
= Queue.new

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

th1.join

実行すると以下のよ...
...うに出力します。

$ ruby que.rb
resource1
resource2
resource3...

Queue (6002.0)

Alias of Thread::Queue

...Alias of Thread::Queue...

SizedQueue (6002.0)

Alias of Thread::SizedQueue

...Alias of Thread::SizedQueue...

Thread::Queue.new -> Thread::Queue (3102.0)

新しいキューオブジェクトを生成します。

新しいキューオブジェクトを生成します。

絞り込み条件を変える

Thread::SizedQueue.new(max) -> Thread::SizedQueue (3102.0)

Thread::SizedQueue オブジェクトを生成します。

...Thread::SizedQueue オブジェクトを生成します。

@param max キューのサイズの最大値です。...

Thread::Queue#pop(non_block = false) -> object (3044.0)

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

...例外 ThreadError が発生します。

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

q
= Queue.new

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

th1.join
//}

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

q
= Queue.new

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

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

# => resource1
# resource2
# resource3
# => #<ThreadError: queue empty>
# => "queu...

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

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

...例外 ThreadError が発生します。

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

q
= Queue.new

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

th1.join
//}

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

q
= Queue.new

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

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

# => resource1
# resource2
# resource3
# => #<ThreadError: queue empty>
# => "queu...

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

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

...と、キューが空の時に例外 ThreadError が発生します。

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

q
= SizedQueue.new(4)

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

th1.join
# => resource1...
...rce3
//}

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

q
= SizedQueue.new(4)

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

begin
th1.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#shift(non_block = false) -> object (3044.0)

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

...と、キューが空の時に例外 ThreadError が発生します。

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

q
= SizedQueue.new(4)

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

th1.join
# => resource1...
...rce3
//}

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

q
= SizedQueue.new(4)

th1 = Thread.start do
while resource = q.pop
puts resource
end
end

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

begin
th1.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#clear -> () (3032.0)

キューを空にします。返り値は不定です。

...キューを空にします。返り値は不定です。

//emlist[例][ruby]{
require 'thread'
q
= Queue.new

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

q
.length # => 4
q
.clear
q
.length # => 0
//}...

Thread::Queue#num_waiting -> Integer (3032.0)

キューを待っているスレッドの数を返します。

...キューを待っているスレッドの数を返します。

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

q
= SizedQueue.new(1)
q
.push(1)
t = Thread.new { q.push(2) }
sleep 0.05 until t.stop?
q
.num_waiting # => 1

q
.pop
t.join
//}...

Thread::Queue#empty? -> bool (3026.0)

キューが空の時、真を返します。

...キューが空の時、真を返します。

//emlist[例][ruby]{
require 'thread'
q
= Queue.new
q
.empty? # => true
q
.push(:resource)
q
.empty? # => false
//}...

Thread::SizedQueue#max=(n) (3026.0)

キューの最大サイズを設定します。

...キューの最大サイズを設定します。

@param n キューの最大サイズを指定します。

//emlist[例][ruby]{
require 'thread'
q
= SizedQueue.new(4)
q
.max # => 4
q
.max = 5
q
.max # => 5
//}...

Thread::Queue#length -> Integer (3020.0)

キューの長さを返します。

...キューの長さを返します。

//emlist[例][ruby]{
require 'thread'
q
= Queue.new

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

q
.length # => 4
//}...

絞り込み条件を変える

Thread::Queue#size -> Integer (3020.0)

キューの長さを返します。

...キューの長さを返します。

//emlist[例][ruby]{
require 'thread'
q
= Queue.new

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

q
.length # => 4
//}...

Thread::SizedQueue#max -> Integer (3014.0)

キューの最大サイズを返します。

...キューの最大サイズを返します。

//emlist[例][ruby]{
q
= SizedQueue.new(4)
q
.max # => 4
//}...

Thread::Queue#<<(value) -> () (3002.0)

キューの値を追加します。待っているスレッドがいれば実行を再開 させます。返り値は不定です。

キューの値を追加します。待っているスレッドがいれば実行を再開
させます。返り値は不定です。

Thread::Queue#push(value) -> () (3002.0)

キューの値を追加します。待っているスレッドがいれば実行を再開 させます。返り値は不定です。

キューの値を追加します。待っているスレッドがいれば実行を再開
させます。返り値は不定です。

Thread::SizedQueue#<<(obj) -> () (3002.0)

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

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

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

@param obj キューに追加したいオブジェクトを指定します。

@see Thread::Queue#push...
...ーに与えられたオブジェクトを追加します。

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

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

@see Thread::Queue#push...

絞り込み条件を変える

Thread::SizedQueue#push(obj) -> () (3002.0)

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

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

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

@param obj キューに追加したいオブジェクトを指定します。

@see Thread::Queue#push...

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

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

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

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

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

@see Thread::Queue#push...

Thread::ConditionVariable (56.0)

スレッドの同期機構の一つである状態変数を実現するクラスです。

...クラスです。

以下も ConditionVariable を理解するのに参考になります。

https://ruby-doc.com/docs/ProgrammingRuby/html/tut_threads.html#UF

=== Condition Variable とは

あるスレッド A が排他領域で動いていたとします。スレッド A は現在空いてい...
...tex = Mutex.new
cv = ConditionVariable.new

a = Thread.start {
mutex.synchronize {
...
while (条件が満たされない)
cv.wait(mutex)
end
...
}
}

b = Thread.start {
mutex.synchronize {
# 上の...
...}
}

以下は 14445 で紹介されている例です。@q が空になった場合、
あるいは満タンになった場合に Condition Variable を使って wait しています。

require 'thread'

class TinyQueue
def initialize(max=2)
@max = max
@full = Condit...