Module: Synchronizable

Extended by:
Decoratable
Defined in:
lib/decoratable/synchronizable.rb

Constant Summary collapse

@@locks =
{}
@@locks_lock =
Mutex.new

Instance Method Summary collapse

Methods included from Decoratable

extended

Instance Method Details

#synchronizable(lock: Mutex.new) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/decoratable/synchronizable.rb', line 9

def synchronizable(lock: Mutex.new)
  @@locks_lock.synchronize do
    lock = @@locks[__decorated_method__.source_location] ||= lock
  end

  lock.synchronize do
    yield
  end
end