Module: RactorLocalSingleton::RactorLocalSingletonClassMethods
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Instance Chain:
|
|
Defined in: | lib/singleton.rb |
Instance Method Summary
- #instance
- #instance_key private
- #mutex_key private
- #set_instance(val) private
- #set_mutex(val) private
::Singleton::SingletonClassMethods
- Included
#_load | By default calls instance(). |
#clone, #instance, #inherited, #set_instance, #set_mutex |
Instance Method Details
#instance
[ GitHub ]# File 'lib/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
#instance_key (private)
[ GitHub ]# File 'lib/singleton.rb', line 216
def instance_key :"__RactorLocalSingleton_instance_with_class_id_#{object_id}__" end
#mutex_key (private)
[ GitHub ]# File 'lib/singleton.rb', line 220
def mutex_key :"__RactorLocalSingleton_mutex_with_class_id_#{object_id}__" end
#set_instance(val) (private)
[ GitHub ]# File 'lib/singleton.rb', line 224
def set_instance(val) Ractor.current[instance_key] = val end
#set_mutex(val) (private)
[ GitHub ]# File 'lib/singleton.rb', line 228
def set_mutex(val) Ractor.current[mutex_key] = val end