class Concurrent::MutexAtomicReference
@!visibility private @!macro internal_implementation_note
Public Class Methods
Source
# File lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb, line 16 def initialize(value = nil) super() @Lock = ::Mutex.new @value = value end
@!macro atomic_reference_method_initialize
Calls superclass method
Public Instance Methods
Source
# 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
@!macro atomic_reference_method_compare_and_set
Source
# File lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb, line 23 def get synchronize { @value } end
@!macro atomic_reference_method_get
Also aliased as: value
Source
# 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
@!macro atomic_reference_method_get_and_set
Also aliased as: swap
Source
# File lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb, line 29 def set(new_value) synchronize { @value = new_value } end
@!macro atomic_reference_method_set
Also aliased as: value=
Protected Instance Methods
Source
# File lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb, line 59 def synchronize if @Lock.owned? yield else @Lock.synchronize { yield } end end
@!visibility private