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

class Ractor

[edit]

要約

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

目次

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

特異メソッド

self[sym] -> object | nil[permalink][rdoc][edit]

このメソッドを呼び出した Ractor の Ractor-local storage の sym に対応するデータを取り出します。 sym に対応するデータがなければ nil を返します。

[PARAM] sym:
Ractor-local storage のキーを指定します。
[RETURN]
Ractor-local storage に格納されている値を返します。
self[sym] = val[permalink][rdoc][edit]
[PARAM] sym:
Ractor-local storage のキーを指定します。
[PARAM] val:
格納するデータを指定します。
count -> Integer[permalink][rdoc][edit]

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

current -> Ractor[permalink][rdoc][edit]

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

main -> Ractor[permalink][rdoc][edit]

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

main? -> bool[permalink][rdoc][edit]

このメソッドを呼び出した Ractor が main Ractor であるとき、true を返します。

make_shareable(obj, copy: false) -> object[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| ... } -> Ractor[permalink][rdoc][edit]

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

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

このメソッドを呼び出した Ractor の default port からメッセージを受信します。

[SEE_ALSO] Ractor::Port#receive

select(*ports) -> [object, object][permalink][rdoc][edit]

引数で指定した Ractor または Ractor::Port のいずれかが受信可能になるまで待ち、受信可能になったものと受信した値の配列を返します。

shareable?(obj) -> bool[permalink][rdoc][edit]

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

[PARAM] obj:
Shareable であるか判定したいオブジェクトを指定します。
store_if_absent(key) { ... } -> object[permalink][rdoc][edit]

このメソッドを呼び出した Ractor の Ractor-local storage の key データがない場合、ブロックを評価した結果を格納します。格納した値を返します。

[PARAM] key:
Ractor-local storage のキーを指定します。

インスタンスメソッド

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

Ractor の default port に対してメッセージを送信します。

[PARAM] msg:
送信するメッセージを指定します。
[PARAM] move:
msg を「移動」する場合は true を指定します。

[SEE_ALSO] Ractor::Port#send

close -> bool[permalink][rdoc][edit]

Default port を閉じます。

self がこのメソッドを呼び出した Ractor ではない場合、Ractor::Error が発生します。

default_port -> Ractor::Port[permalink][rdoc][edit]

self の default port を返します。

join -> Ractor[permalink][rdoc][edit]

self が終了するまで待ちます。 Ractor の実行が例外で終了した場合には、 Ractor#valueを呼び出し、その例外を再発生させます。

monitor(port) -> bool[permalink][rdoc][edit]

port を self の監視ポートとして登録します。 self が終了すると、port は :exited(例外なく終了した場合)または :aborted(未処理の例外で終了した場合)というシンボルを受信します。

監視を登録できた(self がまだ終了していない)場合は true を返します。 self が既に終了していた場合は false を返し、port は直ちに終了を表すシンボルを受信します。

name -> String[permalink][rdoc][edit]

self の名前を返します。

[SEE_ALSO] Ractor.new

unmonitor(port) -> self[permalink][rdoc][edit]

Ractor#monitor で登録した port の監視を解除します。

value -> object[permalink][rdoc][edit]

self が終了するまで待ち、その Ractor のブロックが返した値を返します。 Ractor の実行が例外で終了した場合には、その例外を再発生させます。