このコードはスレッドセーフですか?@myvarが複数のスレッドから割り当てられることは決してないため(ブロックが1秒未満で完了すると想定)、そうあるべきであるように思われます。
しかし、2番目のブロックが書き込まれているときに@myvarを読み取ろうとしている状況について心配する必要がありますか?
require 'rubygems'
require 'eventmachine'
@myvar = Time.now.to_i
EventMachine.run do
EventMachine.add_periodic_timer(1) do
EventMachine.defer do
@myvar = Time.now.to_i # some calculation and reassign
end
end
EventMachine.add_periodic_timer(0.5) do
puts @myvar
end
end