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

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]

value に nil を指定しても変数は削除されず、値が nil の変数として Thread#thread_variables の結果に残ります (Thread#thread_variable? は false を返します)。

nil を指定した例
th = Thread.current
th.thread_variable_set(:x, 1)
th.thread_variable_set(:x, nil)
p th.thread_variable?(:x)  # => false
p th.thread_variables      # => [:x]

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