Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【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 オブジェクトを生成します。

関連コンテンツ