【Ruby3.x】Ractor::new()メソッドの使い方
newメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
newメソッドは、Ractorクラスのインスタンスを新しく生成し、与えられたブロック内の処理を、他のRactorとは独立した並列実行環境で開始するメソッドです。RactorはRuby 3で導入された並列処理の仕組みであり、それぞれが専用のヒープとグローバルインタープリタロック(GIL)を持つため、従来のRubyスレッドとは異なり、CPUバウンドな処理においても複数のCPUコアを効率的に利用して真の並列性を実現できます。
このnewメソッドを使用すると、指定したブロック内のRubyコードが新たなRactorとして起動し、そのRactor自身の独立した環境で実行を開始します。Ractor間でのデータのやり取りは、メッセージの送受信によって明示的に行われるため、共有メモリによる競合状態の発生を防ぎ、より安全な並列プログラミングを促進します。ただし、Ractor間でオブジェクトを受け渡す際には、そのオブジェクトが不変(immutable)であるか、あるいはディープコピーまたはムーブ(所有権の移動)される必要があるという点に留意してください。これにより、複雑なロック機構や同期プリミティブに頼ることなく、高い並列性を求めるシステムや、隔離された環境で処理を実行したい場合に有効な手段となります。
構文(syntax)
1Ractor.new do 2 # Ractor内で実行する処理を記述 3end
引数(parameters)
*args, **kwargs, &block
- *args: 可変長の引数を配列として受け取ります。
- **kwargs: 名前付きの可変長引数をハッシュとして受け取ります。
- &block: ブロックをProcオブジェクトとして受け取ります。
戻り値(return)
Ractor
新しい Ractor オブジェクトを生成します。