るりまサーチ

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

別のキーワード

  1. openssl p
  2. openssl p=
  3. fileutils mkdir_p
  4. dh p=
  5. rsa p

ライブラリ

モジュール

キーワード

検索結果

<< < ... 4 5 6 >>

ThreadsWait#next_wait(nonblock = nil) -> Thread (3114.0)

指定したスレッドのどれかが終了するまで待ちます。

...まで待ちます。

@param nonblock true を与えると、キューが空の時、例外 ThreadsWait::ErrNoFinishedThread が発生します。

@raise ErrNoWaitingThread 終了をまつスレッドが存在しない時、発生します。

@raise ErrNoFinishedThread nonblock がtrue でかつ...
...、キューが空の時、発生します。

#使用例
require 'thwait'

thread
s = []
2.times {|i|
thread
s << Thread.new { sleep i }
}

thall = ThreadsWait.new
thall.join_nowait(*threads)
until thall.empty?
th = thall.next_wait
p
th
end

@see Queue#pop...

ThreadsWait#all_waits -> () (3079.0)

指定されたスレッドすべてが終了するまで待ちます。 ブロックが与えられた場合、スレッド終了時にブロックを評価します。

...e 'thwait'

thread
s = []
5.times {|i|
thread
s << Thread.new { sleep 1; p Thread.current }
}

thall = ThreadsWait.new(*threads)
thall.all_waits{|th|
p
rintf("end %s\n", th.inspect)
}

# 出力例
#=> #<Thread:0x214bc run>
#=> #<Thread:0x21548 run>
#=> #<Thread:0x215d4 r...
...un>
#=> #<Thread:0x21660 run>
#=> #<Thread:0x21430 run>
#=> end #<Thread:0x214bc dead>
#=> end #<Thread:0x21548 dead>
#=> end #<Thread:0x215d4 dead>
#=> end #<Thread:0x21660 dead>
#=> end #<Thread:0x21430 dead>...

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

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

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

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

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

q = SizedQueue.new(4)

th1 = Thread.start do
whi...
...urce = q.pop
p
uts resource
end
end

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

th1.join
# => resource1
# resource2
# resource3
//}

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

q = SizedQueue.new(4)

th1 = Thread.start do
while resource = q.pop
p
uts reso...
...urce
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 (3043.0)

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

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

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

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

q = SizedQueue.new(4)

th1 = Thread.start do
whi...
...urce = q.pop
p
uts resource
end
end

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

th1.join
# => resource1
# resource2
# resource3
//}

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

q = SizedQueue.new(4)

th1 = Thread.start do
while resource = q.pop
p
uts reso...
...urce
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#deq(non_block = false) -> object (3031.0)

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

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

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

q = Queue.new

th1 = Thread.start do
while resource = q.pop
p
uts resource
end
end

[:resource1, :resource2, :resource3, nil].each { |r|
q.push(...
...ire 'thread'

q = Queue.new

th1 = Thread.start do
while resource = q.pop
p
uts 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>
#...
...=> "queue empty"
//}...

絞り込み条件を変える

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

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

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

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

q = Queue.new

th1 = Thread.start do
while resource = q.pop
p
uts resource
end
end

[:resource1, :resource2, :resource3, nil].each { |r|
q.push(...
...ire 'thread'

q = Queue.new

th1 = Thread.start do
while resource = q.pop
p
uts 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>
#...
...=> "queue empty"
//}...

ThreadsWait#finished? -> bool (3031.0)

すでに終了したスレッドが存在すれば true を返します。

...に終了したスレッドが存在すれば true を返します。

使用例
require 'thwait'

thread
s = []
3.times {|i|
thread
s << Thread.new { sleep 1; p Thread.current }
}

thall = ThreadsWait.new(*threads)
p
thall.finished? #=> false
sleep 3
p
thall.finished? #=> true...

Kernel#timeout(sec, exception_class = nil) {|i| .... } -> object (107.0)

ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。

...ます。

exception_class を指定した場合には Timeout::Error の代わりに
その例外が発生します。
ブロックパラメータ i は sec がはいります。

また sec が 0 もしくは nil のときは制限時間なしで
ブロックを実行します。

@param sec タ...
...イムアウトする時間を秒数で指定します.
@param exception_class タイムアウトした時、発生させる例外を指定します.

=== 注意

timeout による割り込みは Thread によって実現されています。C 言語
レベルで実装され、Ruby のスレッド...
...ルでは少ないのですが、例をあげると Socket などは
DNSの名前解決に時間がかかった場合割り込めません
(resolv-replace を使用する必要があります)。
その処理を Ruby で実装しなおすか C 側で Ruby
のスレッドを意識してあげる必...

Fiber#resume(*arg = nil) -> object (25.0)

自身が表すファイバーへコンテキストを切り替えます。 自身は resume を呼んだファイバーの子となります。

...んだファイバーの子となります。

ただし、Fiber#transfer を呼び出した後に resume を呼び出す事はでき
ません。

@param arg self が表すファイバーに渡したいオブジェクトを指定します。

@return コンテキストの切り替えの際に Fiber...
...クの評価結果
を返します。

@raise FiberError 自身が既に終了している場合、コンテキストの切替が
Thread
クラスが表すスレッド間をまたがる場合、自身が resume を
呼んだファイバーの親かその...
...また、Fiber#transfer を呼び出した後に resume を
呼び出した場合に発生します。

//emlist[例:][ruby]{

f = Fiber.new do
Fiber.yield(:hoge)
:fuga
end

p
f.resume() #=> :hoge
p
f.resume() #=> :fuga
p
f.resume() #=> FiberError: dead fiber called
//}...

Fiber#transfer(*args) -> object (13.0)

自身が表すファイバーへコンテキストを切り替えます。

...ーが終了したときや Fiber.yield が呼ばれたときは、
ファイバーの親へ戻らずにメインファイバーへ戻ります。

@param args メインファイバーから呼び出した Fiber#resume メソッドの返り値として渡したいオブジェクトを指定します...
...ッドに与えられた引数を返します。

@raise FiberError 自身が既に終了している場合、コンテキストの切り替えが Thread クラスが表すスレッド間をまたがる場合、
Fiber#resume を呼んだファイバーがその親か先祖である...
...場合に発生します。

//emlist[例:][ruby]{
require 'fiber'

fr1 = Fiber.new do |v|
:fugafuga
end

fr2 = Fiber.new do |v|
fr1.transfer
:fuga
end

fr3 = Fiber.new do |v|
fr2.resume
:hoge
end

p
fr3.resume # => :fugafuga
//}...

絞り込み条件を変える

<< < ... 4 5 6 >>