module RactorLocalSingleton::RactorLocalSingletonClassMethods
Public Instance Methods
Source
# 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
Private Instance Methods
Source
# File lib/singleton.rb, line 216 def instance_key :"__RactorLocalSingleton_instance_with_class_id_#{object_id}__" end
Source
# File lib/singleton.rb, line 220 def mutex_key :"__RactorLocalSingleton_mutex_with_class_id_#{object_id}__" end
Source
# File lib/singleton.rb, line 224 def set_instance(val) Ractor.current[instance_key] = val end
Source
# File lib/singleton.rb, line 228 def set_mutex(val) Ractor.current[mutex_key] = val end