【Ruby3.x】Thread::[]=()メソッドの使い方
[]=メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
[]=メソッドは、RubyのThreadクラスにおいて、現在のスレッドにスレッドローカル変数を設定するために使用するメソッドです。スレッドローカル変数とは、プログラム内で複数の処理が同時に実行される「スレッド」と呼ばれる独立した実行単位それぞれが、自分専用にデータを保持するための仕組みを指します。このメソッドを使うことで、他のスレッドからはアクセスできない、そのスレッド「だけ」の固有の情報を安全に管理できます。
具体的には、Thread.current[:キー] = 値 の形式で呼び出します。[:キー]の部分には、設定したいデータに名前を付けるためのシンボルや文字列を指定し、[値]の部分には実際に保存したいデータを記述します。この操作により、指定されたキーに対応する値が現在のスレッドに紐付けられて保持されます。戻り値は設定された値そのものです。
例えば、Webアプリケーションにおいて、ユーザーからのリクエストを複数のスレッドで並行して処理する際に、各スレッドがそれぞれ異なるユーザーの認証情報やデータベース接続情報といった固有のデータを保持する必要がある場合があります。そのような状況でThread#[]=メソッドを用いることで、各スレッドが独立して自身の情報を保持し、他のスレッドの情報と混ざることなく安全に処理を進めることが可能になります。設定されたスレッドローカル変数は、そのスレッドが終了するまで有効です。
構文(syntax)
1Thread.current[:my_thread_local_variable] = "some value"
引数(parameters)
key, value
- key: スレッドローカルストレージに格納する値のキー
- value: スレッドローカルストレージに格納する値
戻り値(return)
value
スレッドローカル変数に値を設定します。設定された値がそのまま返されます。