Ruby 4.1 リファレンスマニュアル

instance method Thread#thread_variable_set

thread_variable_set(key, value)Ruby 2.0.0 から[permalink][rdoc][edit]
(untyped key, untyped value) → untyped

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

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

例
thr = Thread.new do
  Thread.current.thread_variable_set(:cat, 'meow')
  Thread.current.thread_variable_set("dog", 'woof')
end
p thr.join             # => #<Thread:0x401b3f10 dead>
p thr.thread_variables # => [:cat, :dog]

Ruby 4.1 から、value に nil を指定すると、その名前のスレッドローカル変数自体が削除されます。削除した変数は Thread#thread_variables の結果に含まれなくなります。返り値は指定した value(nil)です。

nil を指定して削除する例
th = Thread.current
th.thread_variable_set(:x, 1)
p th.thread_variables      # => [:x]
th.thread_variable_set(:x, nil)
p th.thread_variable?(:x)  # => false
p th.thread_variables      # => []
p th.thread_variable_get(:x) # => nil

[SEE_ALSO] Thread#thread_variable_get, Thread#thread_variables, Thread#[]