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

【Ruby3.x】Ractor::receive()メソッドの使い方

receiveメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

receiveメソッドは、Ractorが他のRactorからメッセージを受信する際に使用するメソッドです。Ruby 3で導入されたRactorは、並行処理を安全に行うための仕組みであり、それぞれが独立した実行コンテキストを持ちます。これらのRactorは、共有メモリを直接使わず、メッセージを送り合うことで連携します。

receiveメソッドは、現在のRactorのメッセージキューに届いたメッセージの中から一つを取り出し、その値を返します。メッセージがまだ届いていない場合は、新しいメッセージが到着するまで現在のRactorの実行を一時的に停止(ブロック)します。これにより、Ractorは必要なデータが準備されるまで待機することができます。

複数のRactorから同時にメッセージが送信された場合でも、receiveメソッドはキューから利用可能なメッセージを一つだけ受け取ります。メッセージは通常、送信元のRactorがsendメソッドを使用して送信したものです。Ractor間のメッセージとして送受信されるデータは、原則として自動的にディープコピーされるか、変更ができないようにフリーズされるため、異なるRactor間で不意にデータが変更されることを防ぎ、安全な並行プログラミングを実現します。receiveメソッドは、Ractorを活用した堅牢なシステムを構築する上で不可欠な要素です。

構文(syntax)

1Ractor.receive

引数(parameters)

引数なし

引数はありません

戻り値(return)

Object

Ractor#receive メソッドは、他の Ractor から送信されたオブジェクトを受け取ります。このメソッドは、受け取ったオブジェクトをそのまま返します。

関連コンテンツ