Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Threadクラス > thread_variable_get

instance method Thread#thread_variable_get

thread_variable_get(key) -> object | nil[permalink][rdoc]

引数 key で指定した名前のスレッドローカル変数を返します。

[注意]: Thread#[] でセットしたローカル変数(Fiber ローカル変数)と異なり、Fiber を切り替えても同じ変数を返す事に注意してください。

例:

Thread.new {
  Thread.current.thread_variable_set("foo", "bar") # スレッドローカル
  Thread.current["foo"] = "bar"                    # Fiber ローカル

  Fiber.new {
    Fiber.yield [
      Thread.current.thread_variable_get("foo"), # スレッドローカル
      Thread.current["foo"],                     # Fiber ローカル
    ]
  }.resume
}.join.value # => ['bar', nil]

この例の "bar" は Thread#thread_variable_get により得られた値で、nil はThread#[] により得られた値です。

[SEE_ALSO] Thread#thread_variable_set, Thread#[]

[SEE_ALSO] https://magazine.rubyist.net/articles/0041/0041-200Special-note.html