要約
並列プログラミングの仕組みを提供するクラスです。
目次
- 特異メソッド
- インスタンスメソッド
特異メソッド
self[sym] -> object | nilRuby 3.4 から[permalink][rdoc][edit]-
このメソッドを呼び出した Ractor の Ractor-local storage の sym に対応するデータを取り出します。 sym に対応するデータがなければ nil を返します。
- [PARAM]
sym: - Ractor-local storage のキーを指定します。
- [RETURN]
- Ractor-local storage に格納されている値を返します。
- [PARAM]
self[sym] = valRuby 3.4 から[permalink][rdoc][edit]-
- [PARAM]
sym: - Ractor-local storage のキーを指定します。
- [PARAM]
val: - 格納するデータを指定します。
- [PARAM]
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)を返します。
main? -> boolRuby 3.4 から[permalink][rdoc][edit]-
このメソッドを呼び出した Ractor が main Ractor であるとき、true を返します。
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 にします。
- [PARAM]
new(*args, name: nil) {|*args| ... } -> RactorRuby 3.0 から[permalink][rdoc][edit]-
Ractor を生成して、ブロックの評価を開始します。生成した Ractor を返します。
- [PARAM]
args: - ブロックの引数として渡されます。値が shareable である場合はそのインスタンスが、そうでない場合はコピーが試みられた値が渡されます。コピーできない値であった場合は例外が発生します。
- [PARAM]
name: - Ractor の名前を指定します。
- [PARAM]
receive -> objectRuby 3.0 から[permalink][rdoc][edit]recv -> object-
このメソッドを呼び出した Ractor の default port からメッセージを受信します。
[SEE_ALSO] Ractor::Port#receive
select(*ports) -> [object, object]Ruby 3.0 から[permalink][rdoc][edit]-
引数で指定した Ractor または Ractor::Port のいずれかが受信可能になるまで待ち、受信可能になったものと受信した値の配列を返します。
shareable?(obj) -> boolRuby 3.0 から[permalink][rdoc][edit]-
obj が shareable である場合、true を返します。
- [PARAM]
obj: - Shareable であるか判定したいオブジェクトを指定します。
- [PARAM]
shareable_lambda { ... } -> ProcRuby 4.0 から[permalink][rdoc][edit]-
Ractor.shareable_proc と同じですが、lambda である Proc を返します。
l = Ractor.shareable_lambda { 42 } p Ractor.shareable?(l) # => true p l.lambda? # => true[SEE_ALSO] Ractor.shareable_proc
shareable_proc { ... } -> ProcRuby 4.0 から[permalink][rdoc][edit]-
与えられたブロックから shareable な Proc を作成して返します。
通常の Proc は shareable ではないため、他の Ractor に渡せません。このメソッドで作成した Proc は shareable になるため、複数の Ractor から利用できます。
pr = Ractor.shareable_proc { 42 } p Ractor.shareable?(pr) # => true p pr.lambda? # => false p Ractor.shareable?(proc { 42 }) # => false (通常の Proc は shareable ではない) # 他の Ractor に渡して呼び出せる p Ractor.new(pr) {|p| p.call }.value # => 42[SEE_ALSO] Ractor.shareable_lambda, Ractor.make_shareable
store_if_absent(key) { ... } -> objectRuby 3.4 から[permalink][rdoc][edit]-
このメソッドを呼び出した Ractor の Ractor-local storage の key データがない場合、ブロックを評価した結果を格納します。格納した値を返します。
- [PARAM]
key: - Ractor-local storage のキーを指定します。
- [PARAM]
インスタンスメソッド
self << msg, move: false -> selfRuby 3.0 から[permalink][rdoc][edit]send(msg, move: false) -> self-
Ractor の default port に対してメッセージを送信します。
- [PARAM]
msg: - 送信するメッセージを指定します。
- [PARAM]
move: - msg を「移動」する場合は true を指定します。
[SEE_ALSO] Ractor::Port#send
- [PARAM]
close -> boolRuby 4.0 から[permalink][rdoc][edit]-
Default port を閉じます。
self がこのメソッドを呼び出した Ractor ではない場合、Ractor::Error が発生します。
default_port -> Ractor::PortRuby 4.0 から[permalink][rdoc][edit]-
self の default port を返します。
join -> RactorRuby 4.0 から[permalink][rdoc][edit]-
self が終了するまで待ちます。 Ractor の実行が例外で終了した場合には、 Ractor#valueを呼び出し、その例外を再発生させます。
monitor(port) -> boolRuby 4.0 から[permalink][rdoc][edit]-
port を self の監視ポートとして登録します。 self が終了すると、port は :exited(例外なく終了した場合)または :aborted(未処理の例外で終了した場合)というシンボルを受信します。
監視を登録できた(self がまだ終了していない)場合は true を返します。 self が既に終了していた場合は false を返し、port は直ちに終了を表すシンボルを受信します。
name -> StringRuby 3.0 から[permalink][rdoc][edit]-
self の名前を返します。
[SEE_ALSO] Ractor.new
unmonitor(port) -> selfRuby 4.0 から[permalink][rdoc][edit]-
Ractor#monitor で登録した port の監視を解除します。
value -> objectRuby 4.0 から[permalink][rdoc][edit]-
self が終了するまで待ち、その Ractor のブロックが返した値を返します。 Ractor の実行が例外で終了した場合には、その例外を再発生させます。