このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。 最新版のマニュアルへ

Ruby 3.2 リファレンスマニュアル

class Ractor

[edit]

要約

並列プログラミングの仕組みを提供するクラスです。

目次

特異メソッド
インスタンスメソッド

特異メソッド

count -> IntegerRuby 3.0 から[permalink][rdoc][edit]

実行中の Ractor の数を返します。

current -> RactorRuby 3.0 から[permalink][rdoc][edit]

このメソッドを呼び出された Ractor を返します。

main -> RactorRuby 3.0 から[permalink][rdoc][edit]

main Ractor(プログラムの実行が開始された Ractor)を返します。

make_shareable(obj, copy: false) -> objectRuby 3.0 から[permalink][rdoc][edit]

obj が shareable になるよう変換します。

obj が shareable でない場合、obj と obj が参照する shareable でないオブジェクトをすべて freeze します。

[PARAM] obj:
Shareable にしたいオブジェクトを指定します。
[PARAM] copy:
true の場合、obj を変更する代わりに obj のコピーを作成し shareable にします。
new(*args, name: nil) {|*args| ... } -> RactorRuby 3.0 から[permalink][rdoc][edit]

Ractor を生成して、ブロックの評価を開始します。生成した Ractor を返します。

[PARAM] args:
ブロックの引数として渡されます。値が shareable である場合はそのインスタンスが、そうでない場合はコピーが試みられた値が渡されます。コピーできない値であった場合は例外が発生します。
[PARAM] name:
Ractor の名前を指定します。
receive -> objectRuby 3.0 から[permalink][rdoc][edit]
recv -> object

このメソッドを呼び出した Ractor が受信したメッセージを取り出して返します。メッセージが届くまでブロックします。

他の Ractor から Ractor#send で送られたメッセージを受信します。

receive_if {|msg| ... } -> objectRuby 3.0 から Ruby 4.0 で削除[permalink][rdoc][edit]

このメソッドを呼び出した Ractor が受信したメッセージのうち、ブロックの評価結果が真になる最初のメッセージを受信して返します。

select(*ractors, yield_value: nil, move: false) -> [object, object]Ruby 3.0 から[permalink][rdoc][edit]

引数で指定した Ractor のいずれかが Ractor.yield などで送信可能になるまで待ち、その Ractor と受信したオブジェクトの配列 [Ractor, obj] を返します。受信したのが現在の Ractor 自身であった場合は、Ractor の代わりに :receive シンボルが返ります。 yield_value を指定すると、他の Ractor が Ractor#take を呼んだときにその値が yield され、 [:yield, nil] が返ります。move が真のとき yield_value は移動されます。

shareable?(obj) -> boolRuby 3.0 から[permalink][rdoc][edit]

obj が shareable である場合、true を返します。

[PARAM] obj:
Shareable であるか判定したいオブジェクトを指定します。
yield(obj, move: false) -> objectRuby 3.0 から Ruby 4.0 で削除[permalink][rdoc][edit]

現在の Ractor の outgoing port に obj を送信します。別の Ractor が Ractor#take でこのメッセージを受信するまでブロックします。

[PARAM] obj:
送信するオブジェクトを指定します。
[PARAM] move:
obj を「移動」する場合は true を指定します。

インスタンスメソッド

self << msg, move: false -> selfRuby 3.0 から[permalink][rdoc][edit]
send(msg, move: false) -> self

self にメッセージを送信します。送られたメッセージは self が Ractor.receive で受信できます。

[PARAM] msg:
送信するメッセージを指定します。
[PARAM] move:
msg を「移動」する場合は true を指定します。
name -> StringRuby 3.0 から[permalink][rdoc][edit]

self の名前を返します。

[SEE_ALSO] Ractor.new

take -> objectRuby 3.0 から Ruby 4.0 で削除[permalink][rdoc][edit]

self の outgoing port からメッセージを受信します。 self が Ractor.yield で送ったメッセージ、または self のブロックが返した値を受け取ります。メッセージが届くまでブロックします。