module RactorLocalSingleton::RactorLocalSingletonClassMethods - singleton: Ruby Standard Library Documentation

# module RactorLocalSingleton::RactorLocalSingletonClassMethods

### Public Instance Methods

instance() click to toggle source

    # File singleton.rb, line 204
    def instance
      set_mutex(Thread::Mutex.new) if Ractor.current[mutex_key].nil?
      return Ractor.current[instance_key] if Ractor.current[instance_key]
      Ractor.current[mutex_key].synchronize {
        return Ractor.current[instance_key] if Ractor.current[instance_key]
        set_instance(new())
      }
      Ractor.current[instance_key]
    end

### Private Instance Methods

instance_key() click to toggle source

    # File singleton.rb, line 216
    def instance_key
      :"__RactorLocalSingleton_instance_with_class_id_#{object_id}__"
    end

mutex_key() click to toggle source

    # File singleton.rb, line 220
    def mutex_key
      :"__RactorLocalSingleton_mutex_with_class_id_#{object_id}__"
    end

set_instance(val) click to toggle source

    # File singleton.rb, line 224
    def set_instance(val)
      Ractor.current[instance_key] = val
    end

set_mutex(val) click to toggle source

    # File singleton.rb, line 228
    def set_mutex(val)
      Ractor.current[mutex_key] = val
    end