るりまサーチ

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

別のキーワード

  1. openssl p
  2. openssl p=
  3. fileutils mkdir_p
  4. matrix p
  5. kernel p

クラス

キーワード

検索結果

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

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

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

@param args メインファイバーから呼び出した Fiber#resume メソッドの返り値として渡したいオブジェクトを指定します...
...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
//}...

Fiber (38.0)

ノンプリエンプティブな軽量スレッド(以下ファイバーと呼ぶ)を提供します。 他の言語では coroutine あるいは semicoroutine と呼ばれることもあります。 Thread と違いユーザレベルスレッドとして実装されています。

...ます。

なお標準添付ライブラリ fiber を require することにより、
コンテキストの切り替えに制限のない Fiber#transfer が使えるようになります。
任意のファイバーにコンテキストを切り替えることができます。

=== 例外

ファ...
...mlist[例:][ruby]{
f = Fiber.new do
raise StandardError, "hoge"
end

begin
f.resume # ここでも StandardError が発生する。
rescue => e
p
e.message #=> "hoge"
end
//}

=== ショートチュートリアル

ファイバーは処理のあるポイントで他のルーチンにコンテ...
...の引数が、親での Fiber#resume の返り値になります。
//emlist[例:][ruby]{
f = Fiber.new do
n = 0
loop do
Fiber.yield(n)
n += 1
end
end

5.times do
p
f.resume
end

#=> 0
1
2
3
4
//}

以下は内部イテレータを外部イテレータに変換する...
...ストが切り替わります。

Ruby 3.1 から fiber を require しなくても、
コンテキストの切り替えに制限のない Fiber#transfer が使えます。
任意のファイバーにコンテキストを切り替えることができます。

=== 例外

ファイバー実行中...

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

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

...り替えます。
自身は resume を呼んだファイバーの子となります。

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

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

@return コン...
...また、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 fib...