Files

DSLKit::ThreadGlobal

Public Instance Methods

instance_thread_global(name, value = nil) click to toggle source

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/dslkit/polite.rb, line 130
    def instance_thread_global(name, value = nil)
      sc = class << self
        extend DSLKit::ThreadGlobal
        self
      end
      sc.thread_global name, value
      self
    end
thread_global(name, value = nil) click to toggle source

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/dslkit/polite.rb, line 106
    def thread_global(name, 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, value if value
      self
    end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.