class Concurrent::MutexAtomicReference

@!visibility private @!macro internal_implementation_note

Public Class Methods

new(value = nil) click to toggle source

@!macro atomic_reference_method_initialize

Calls superclass method
# File lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb, line 16
def initialize(value = nil)
  super()
  @Lock = ::Mutex.new
  @value = value
end

Public Instance Methods

_compare_and_set(old_value, new_value) click to toggle source

@!macro atomic_reference_method_compare_and_set

# File lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb, line 45
def _compare_and_set(old_value, new_value)
  synchronize do
    if @value.equal? old_value
      @value = new_value
      true
    else
      false
    end
  end
end
get() click to toggle source

@!macro atomic_reference_method_get

# File lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb, line 23
def get
  synchronize { @value }
end
Also aliased as: value
get_and_set(new_value) click to toggle source

@!macro atomic_reference_method_get_and_set

# File lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb, line 35
def get_and_set(new_value)
  synchronize do
    old_value = @value
    @value = new_value
    old_value
  end
end
Also aliased as: swap
set(new_value) click to toggle source

@!macro atomic_reference_method_set

# File lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb, line 29
def set(new_value)
  synchronize { @value = new_value }
end
Also aliased as: value=
swap(new_value)
Alias for: get_and_set
value()
Alias for: get
value=(new_value)
Alias for: set

Protected Instance Methods

synchronize() { || ... } click to toggle source

@!visibility private

# File lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb, line 59
def synchronize
  if @Lock.owned?
    yield
  else
    @Lock.synchronize { yield }
  end
end