class Concurrent::MutexAtomicFixnum
@!macro atomic_fixnum @!visibility private @!macro internal_implementation_note
Public Class Methods
Source
# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 13 def initialize(initial = 0) super() @Lock = ::Mutex.new ns_set(initial) end
@!macro atomic_fixnum_method_initialize
Calls superclass method
Public Instance Methods
Source
# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 44 def compare_and_set(expect, update) synchronize do if @value == expect.to_i @value = update.to_i true else false end end end
@!macro atomic_fixnum_method_compare_and_set
Source
# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 37 def decrement(delta = 1) synchronize { ns_set(@value - delta.to_i) } end
@!macro atomic_fixnum_method_decrement
Also aliased as: down
Source
# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 30 def increment(delta = 1) synchronize { ns_set(@value + delta.to_i) } end
@!macro atomic_fixnum_method_increment
Also aliased as: up
Source
# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 56 def update synchronize do @value = yield @value end end
@!macro atomic_fixnum_method_update
Source
# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 20 def value synchronize { @value } end
@!macro atomic_fixnum_method_value_get
Source
# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 25 def value=(value) synchronize { ns_set(value) } end
@!macro atomic_fixnum_method_value_set
Protected Instance Methods
Source
# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 65 def synchronize if @Lock.owned? yield else @Lock.synchronize { yield } end end
@!visibility private
Private Instance Methods
Source
# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 76 def ns_set(value) Utility::NativeInteger.ensure_integer_and_bounds value @value = value end
@!visibility private