【Ruby3.x】Ractor::make_shareable()メソッドの使い方
make_shareableメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
make_shareableメソッドは、Ruby 3で導入された並行処理の仕組みであるRactor(ラクター)間で、オブジェクトを安全に共有できるようにするメソッドです。Ractorは独立した実行単位であり、デフォルトではオブジェクトの直接的な共有を制限することで、安全な並行処理を実現しています。通常、Ractor間でオブジェクトを渡す際には、そのオブジェクトはコピーされます。
しかし、特定のオブジェクトをコピーせずに複数のRactor間で共有したい場合があります。make_shareableメソッドは、レシーバーであるオブジェクトを「共有可能(shareable)」として明示的にマークします。このメソッドを呼び出すと、対象のオブジェクトは以降、Ractor間でコピーされずに参照渡しできるようになります。また、このメソッドを実行する際に、もしオブジェクトがまだ凍結(freeze)されていなければ、自動的に凍結されます。これは、共有されるオブジェクトが変更されないことを保証し、複数のRactorからの同時変更による予期せぬ問題を未然に防ぐためです。この機能により、パフォーマンスの向上と安全な並行プログラミングの両立が可能になります。
構文(syntax)
1Ractor.make_shareable(object)
引数(parameters)
obj
- obj: Ractor 間で共有可能にするオブジェクト
戻り値(return)
Object
Ractor 内で安全に共有できる、複製されたオブジェクトを返します。