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=
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