Class: Higgs::OptimisticLockManager

Inherits:
LockManager show all
Defined in:
lib/higgs/lock.rb

Constant Summary collapse

CVS_ID =

for ident(1)

'$Id: lock.rb 841 2008-12-24 09:23:20Z toki $'

Instance Method Summary collapse

Methods inherited from LockManager

#exclusive

Constructor Details

#initialize(*args) ⇒ OptimisticLockManager

Returns a new instance of OptimisticLockManager.



131
132
133
134
# File 'lib/higgs/lock.rb', line 131

def initialize(*args)
  super
  @critical_lock = Mutex.new
end

Instance Method Details

#transaction(read_only = false) ⇒ Object



136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/higgs/lock.rb', line 136

def transaction(read_only=false)
  r = nil
  @tx_lock.read_lock.synchronize{
    if (read_only) then
      lock_handler = CriticalRegionLockHandler.new(@critical_lock)
    else
      lock_handler = CollisionCheckLockHandler.new(@critical_lock)
    end
    r = yield(lock_handler)
  }
  r
end