【Ruby3.x】Ractor::<<()メソッドの使い方
<<メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
<<メソッドはRactorオブジェクトに対してメッセージを送信するメソッドです。RactorはRuby 3で導入された、独立したメモリ空間を持つ並行処理の単位です。複数のRactorは互いに独立してコードを実行し、直接メモリを共有しない「Shared Nothing」の原則に基づいて動作します。これにより、従来の並行処理で問題となりがちだったデータ競合のリスクを大幅に削減し、より安全な並行プログラミングを実現します。
この独立したRactor間でデータをやり取りする主要な手段が、この<<メソッドを使ったメッセージパッシングです。具体的には、target_ractor << message のように記述することで、messageというオブジェクトがtarget_ractorに送られます。送信されたメッセージは、Ractorの内部にある受信キューに格納され、Ractor#recvメソッドなどを用いてRactor内部で受け取られ、処理されます。
<<メソッドを通じてメッセージを送信することで、Ractorは外部からのデータを受け取り、そのデータに基づいて処理を進めることができます。この際、メッセージとして渡せるオブジェクトには制限があり、安全のためにコピー可能なオブジェクトや変更不能な(immutableな)オブジェクトが推奨されます。これにより、複数のRactorが同じデータを同時に変更しようとすることなく、Ractor間の安全で効率的な通信が確立され、複雑な並行処理を信頼性高く構築する上で非常に重要な役割を果たします。
構文(syntax)
1r = Ractor.new {} 2r << "message"
引数(parameters)
obj
- obj: Ractor に追加するオブジェクト
戻り値(return)
Ractor
Ractorオブジェクトを返します。これは、他のRactorにオブジェクトを安全に送信するために使用されます。