class Concurrent::ReentrantReadWriteLock

def release_write_lock

Returns:
  • (Boolean) - true if the lock is successfully released
def release_write_lock
  held = @HeldCount.value = @HeldCount.value - WRITE_LOCK_HELD
  wlocks_held = held & WRITE_LOCK_MASK
  if wlocks_held == 0
    c = @Counter.update { |counter| counter - RUNNING_WRITER }
    @ReadQueue.broadcast
    @WriteQueue.signal if waiting_writers(c) > 0
  elsif wlocks_held == WRITE_LOCK_MASK
    raise IllegalOperationError, "Cannot release a write lock which is not held"
  end
  true
end