種類
- インスタンスメソッド (81)
- 文書 (50)
- 特異メソッド (42)
- クラス (22)
クラス
- Fiber (81)
- Thread (33)
- TracePoint (9)
キーワード
- Enumerator (11)
- Fiber (11)
-
NEWS for Ruby 2
. 0 . 0 (11) -
NEWS for Ruby 2
. 2 . 0 (10) -
NEWS for Ruby 2
. 6 . 0 (6) -
NEWS for Ruby 2
. 7 . 0 (5) -
NEWS for Ruby 3
. 0 . 0 (4) -
NEWS for Ruby 3
. 1 . 0 (3) - Ruby用語集 (11)
- [] (11)
- alive? (11)
- current (11)
- raise (15)
- resume (11)
-
thread
_ variable _ get (11) -
thread
_ variable _ set (11) - transfer (11)
- yield (11)
検索結果
先頭5件
-
Fiber
. new {|obj| . . . } -> Fiber (27230.0) -
与えられたブロックとともにファイバーを生成して返します。 ブロックは Fiber#resume に与えられた引数をその引数として実行されます。
...ロックは Fiber#resume に与えられた引数をその引数として実行されます。
ブロックが終了した場合は親にコンテキストが切り替わります。
その時ブロックの評価値が返されます。
//emlist[例:][ruby]{
a = nil
f = Fiber.new do |obj|
a =... -
TracePoint
. new(*events) {|obj| . . . } -> TracePoint (18113.0) -
新しい TracePoint オブジェクトを作成して返します。トレースを有効 にするには TracePoint#enable を実行してください。
...ースを有効
にするには TracePoint#enable を実行してください。
//emlist[例:irb で実行した場合][ruby]{
trace = TracePoint.new(:call) do |tp|
p [tp.lineno, tp.defined_class, tp.method_id, tp.event]
end
# => #<TracePoint:0x007f17372cdb20>
trace.enable
# => false
puts "H......の開始。
: :b_return
ブロックの終了。
: :thread_begin
スレッドの開始。
: :thread_end
スレッドの終了。
: :fiber_switch
ファイバーの切り替え。
指定イベントに関連しない情報を取得するメソッドを実行した場合には
Runti......の開始。
: :b_return
ブロックの終了。
: :thread_begin
スレッドの開始。
: :thread_end
スレッドの終了。
: :fiber_switch
ファイバーの切り替え。
: :script_compiled
スクリプトのコンパイル
指定イベントに関連しない情報を... -
Fiber
. current -> Fiber (17159.0) -
このメソッドが評価されたコンテキストにおける Fiber のインスタンスを返します。
...のメソッドが評価されたコンテキストにおける Fiber のインスタンスを返します。
//emlist[例:][ruby]{
fr = Fiber.new do
Fiber.current
end
fb = fr.resume
p fb.equal?(fr) # => true
p Fiber.current # => #<Fiber:0x91345e4>
p Fiber.current # => #<Fiber:0x91345e4>
//}... -
Fiber
# transfer(*args) -> object (17078.0) -
自身が表すファイバーへコンテキストを切り替えます。
...表すファイバーへコンテキストを切り替えます。
自身は Fiber#resume を呼んだファイバーの子となります。
Fiber#resume との違いは、ファイバーが終了したときや Fiber.yield が呼ばれたときは、
ファイバーの親へ戻らずにメイン......ァイバーから呼び出した Fiber#resume メソッドの返り値として渡したいオブジェクトを指定します。
@return コンテキスト切り替えの際に、Fiber#resume メソッドに与えられた引数を返します。
@raise FiberError 自身が既に終了してい......またがる場合、
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
:ho... -
Fiber
# alive? -> bool (17036.0) -
ファイバーが「生きている」時、真を返します。
...は以下の場合です。
* まだ Fiber#resume されていない
* ブロック内の評価が終了していない (Fiber.yield が呼ばれていない)
//emlist[例:][ruby]{
fr = Fiber.new{
Fiber.yield
"a"
}
p fr.alive? # => true
fr.resume # Fiber.yieldで戻ってくる
p fr.alive? #... -
Fiber
. current -> Fiber (9159.0) -
このメソッドが評価されたコンテキストにおける Fiber のインスタンスを返します。
...のメソッドが評価されたコンテキストにおける Fiber のインスタンスを返します。
//emlist[例:][ruby]{
fr = Fiber.new do
Fiber.current
end
fb = fr.resume
p fb.equal?(fr) # => true
p Fiber.current # => #<Fiber:0x91345e4>
p Fiber.current # => #<Fiber:0x91345e4>
//}... -
Fiber
# transfer(*args) -> object (9078.0) -
自身が表すファイバーへコンテキストを切り替えます。
...表すファイバーへコンテキストを切り替えます。
自身は Fiber#resume を呼んだファイバーの子となります。
Fiber#resume との違いは、ファイバーが終了したときや Fiber.yield が呼ばれたときは、
ファイバーの親へ戻らずにメイン......ァイバーから呼び出した Fiber#resume メソッドの返り値として渡したいオブジェクトを指定します。
@return コンテキスト切り替えの際に、Fiber#resume メソッドに与えられた引数を返します。
@raise FiberError 自身が既に終了してい......またがる場合、
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
:ho... -
Fiber
# raise -> object (9058.0) -
selfが表すファイバーが最後に Fiber.yield を呼んだ場所で例外を発生させます。
...selfが表すファイバーが最後に Fiber.yield を呼んだ場所で例外を発生させます。
Fiber.yield が呼ばれていないかファイバーがすでに終了している場合、
FiberError が発生します。
引数を渡さない場合、RuntimeError が発生します。......で指定します。
//emlist[例][ruby]{
f = Fiber.new { Fiber.yield }
f.resume
f.raise "Error!" # => Error! (RuntimeError)
//}
//emlist[ファイバー内のイテレーションを終了させる例][ruby]{
f = Fiber.new do
loop do
Fiber.yield(:loop)
end
:exit
end
p f.resume... -
Fiber
# raise(exception , message = nil , backtrace = nil) -> object (9058.0) -
selfが表すファイバーが最後に Fiber.yield を呼んだ場所で例外を発生させます。
...selfが表すファイバーが最後に Fiber.yield を呼んだ場所で例外を発生させます。
Fiber.yield が呼ばれていないかファイバーがすでに終了している場合、
FiberError が発生します。
引数を渡さない場合、RuntimeError が発生します。......で指定します。
//emlist[例][ruby]{
f = Fiber.new { Fiber.yield }
f.resume
f.raise "Error!" # => Error! (RuntimeError)
//}
//emlist[ファイバー内のイテレーションを終了させる例][ruby]{
f = Fiber.new do
loop do
Fiber.yield(:loop)
end
:exit
end
p f.resume... -
Fiber
# raise(message) -> object (9058.0) -
selfが表すファイバーが最後に Fiber.yield を呼んだ場所で例外を発生させます。
...selfが表すファイバーが最後に Fiber.yield を呼んだ場所で例外を発生させます。
Fiber.yield が呼ばれていないかファイバーがすでに終了している場合、
FiberError が発生します。
引数を渡さない場合、RuntimeError が発生します。......で指定します。
//emlist[例][ruby]{
f = Fiber.new { Fiber.yield }
f.resume
f.raise "Error!" # => Error! (RuntimeError)
//}
//emlist[ファイバー内のイテレーションを終了させる例][ruby]{
f = Fiber.new do
loop do
Fiber.yield(:loop)
end
:exit
end
p f.resume... -
Fiber
# resume(*arg = nil) -> object (9042.0) -
自身が表すファイバーへコンテキストを切り替えます。 自身は resume を呼んだファイバーの子となります。
...なります。
ただし、Fiber#transfer を呼び出した後に resume を呼び出す事はでき
ません。
@param arg self が表すファイバーに渡したいオブジェクトを指定します。
@return コンテキストの切り替えの際に Fiber.yield に与えられた引......数
を返します。ブロックの終了まで実行した場合はブロックの評価結果
を返します。
@raise FiberError 自身が既に終了している場合、コンテキストの切替が
Thread クラスが表すスレッド間をまたがる......また、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
# alive? -> bool (9036.0) -
ファイバーが「生きている」時、真を返します。
...は以下の場合です。
* まだ Fiber#resume されていない
* ブロック内の評価が終了していない (Fiber.yield が呼ばれていない)
//emlist[例:][ruby]{
fr = Fiber.new{
Fiber.yield
"a"
}
p fr.alive? # => true
fr.resume # Fiber.yieldで戻ってくる
p fr.alive? #... -
Fiber
. yield(*arg = nil) -> object (9030.0) -
現在のファイバーの親にコンテキストを切り替えます。
...す。
コンテキストの切り替えの際に Fiber#resume に与えられた引数を yield メソッドは返します。
@param arg 現在のファイバーの親に渡したいオブジェクトを指定します。
@raise FiberError Fiber でのルートファイバーで呼ばれた場......合に発生します。
//emlist[例:][ruby]{
a = nil
f = Fiber.new do
a = Fiber.yield()
end
f.resume()
f.resume(:foo)
p a #=> :foo
//}... -
Fiber (6144.0)
-
ノンプリエンプティブな軽量スレッド(以下ファイバーと呼ぶ)を提供します。 他の言語では coroutine あるいは semicoroutine と呼ばれることもあります。 Thread と違いユーザレベルスレッドとして実装されています。
...係を持ちます。Fiber#resume を呼んだファイバーが親になり
呼ばれたファイバーが子になります。親子関係を壊すような遷移(例えば
自分の親の親のファイバーへ切り替えるような処理)はできません。
例外 FiberError が発生しま......す。
できることは
* Fiber#resume により子へコンテキストを切り替える
* Fiber.yield により親へコンテキストを切り替える
の二通りです。この親子関係は一時的なものであり
親ファイバーへコンテキストを切り替えた時点で解...... Fiber#transfer が使えるようになります。
任意のファイバーにコンテキストを切り替えることができます。
=== 例外
ファイバー実行中に例外が発生した場合、親ファイバーに例外が伝播します。
//emlist[例:][ruby]{
f = Fiber.new do......のない Fiber#transfer が使えます。
任意のファイバーにコンテキストを切り替えることができます。
=== 例外
ファイバー実行中に例外が発生した場合、親ファイバーに例外が伝播します。
//emlist[例:][ruby]{
f = Fiber.new do
raise S...