Define a thread global variable for the current instance with name name. If the value value is given, it is used to initialize the variable.
# File lib/tins/dslkit.rb, line 79 def instance_thread_global(name, value = nil) sc = class << self extend Tins::ThreadGlobal self end sc.thread_global name, value self end
Define a thread global variable named name in this module/class. If the value value is given, it is used to initialize the variable.
# File lib/tins/dslkit.rb, line 55 def thread_global(name, default_value = nil) is_a?(Module) or raise TypeError, "receiver has to be a Module" name = name.to_s var_name = "@__#{name}_#{__id__.abs}__" lock = Mutex.new modul = self define_method(name) do lock.synchronize { modul.instance_variable_get var_name } end define_method(name + "=") do |value| lock.synchronize { modul.instance_variable_set var_name, value } end modul.instance_variable_set var_name, default_value if default_value self end
Generated with the Darkfish Rdoc Generator 2.