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