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

singleton method Ractor.new

new(*args, name: nil) {|*args| ... } -> RactorRuby 3.0 から[permalink][rdoc][edit]

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

ブロックは外側のスコープから隔離されます。ブロックの中の self は生成した Ractor です。ブロックは外側のローカル変数を参照できません。外側のオブジェクトをブロックで使うには args で渡します。また、& で渡した Proc は隔離のために変更され、shareable になります。

[PARAM] args:
ブロックの引数として渡されます。値が shareable である場合はそのインスタンスが、そうでない場合はコピーが試みられた値が渡されます。コピーできない値であった場合は例外が発生します。
[PARAM] name:
Ractor の名前を指定します。
[EXCEPTION] ArgumentError:
ブロックが外側のローカル変数を参照している場合や、yield を使っている場合に発生します。
例: 外側のローカル変数の参照
a = 1
Ractor.new { a } # ~> ArgumentError
例: 外側のオブジェクトを引数で渡す
a = [1, 2]
r = Ractor.new(a) {|x| x.sum }
p r.take # => 3