class Qonfig::DataSet::Lock
@api private @since 0.13.0
Attributes
access_lock[R]
@return [Mutex]
@api private @since 0.13.0
arbitary_lock[R]
@return [Mutex]
@api private @since 0.17.0
definition_lock[R]
@return [Mutex]
@api private @since 0.13.0
Public Class Methods
new()
click to toggle source
@return [void]
@api private @since 0.13.0
# File lib/qonfig/data_set/lock.rb, line 10 def initialize @access_lock = Mutex.new @definition_lock = Mutex.new @arbitary_lock = Mutex.new end
Public Instance Methods
thread_safe_access(&instructions)
click to toggle source
@param instructions [Block] @return [void]
@api private @since 0.13.0
# File lib/qonfig/data_set/lock.rb, line 30 def thread_safe_access(&instructions) if arbitary_lock.locked? # :nocov: # NOTE: covered in thread-based specs but simplecov can't gather this fact with_arbitary_access { acquire_access_lock(&instructions) } # :nocov: # :nocov: else acquire_access_lock(&instructions) end end
thread_safe_definition(&instructions)
click to toggle source
@param instructions [Block] @return [void]
@api private @since 0.13.0
# File lib/qonfig/data_set/lock.rb, line 46 def thread_safe_definition(&instructions) if arbitary_lock.locked? # :nocov: # NOTE: covered in thread-based specs but simplecov can't gather this fact with_arbitary_access { acquire_definition_lock(&instructions) } # :nocov: else acquire_definition_lock(&instructions) end end
with_arbitary_access(&instructions)
click to toggle source
@param instructions [Block] @return [void]
@api private @since 0.17.0
# File lib/qonfig/data_set/lock.rb, line 21 def with_arbitary_access(&instructions) acquire_arbitary_lock(&instructions) end
Private Instance Methods
acquire_access_lock() { |: synchronize(&instructions)| ... }
click to toggle source
@param instructions [Block] @return [void]
@api private @since 0.13.0
# File lib/qonfig/data_set/lock.rb, line 91 def acquire_access_lock(&instructions) access_lock.owned? ? yield : access_lock.synchronize(&instructions) end
acquire_arbitary_lock() { |: synchronize(&instructions)| ... }
click to toggle source
@param instructions [Block] @return [void]
@api private @since 0.17.0
# File lib/qonfig/data_set/lock.rb, line 82 def acquire_arbitary_lock(&instructions) arbitary_lock.owned? ? yield : arbitary_lock.synchronize(&instructions) end
acquire_definition_lock() { |: synchronize(&instructions)| ... }
click to toggle source
@param instructions [Block] @return [void]
@api private @since 0.13.0
# File lib/qonfig/data_set/lock.rb, line 100 def acquire_definition_lock(&instructions) definition_lock.owned? ? yield : definition_lock.synchronize(&instructions) end