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 12
def initialize(initial = 0)
  super()
  synchronize { ns_initialize(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 42
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 35
def decrement(delta = 1)
  synchronize { ns_set(@value - delta.to_i) }
end
Also aliased as: down
down(delta = 1)
Alias for: decrement
increment(delta = 1) click to toggle source

@!macro atomic_fixnum_method_increment

# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 28
def increment(delta = 1)
  synchronize { ns_set(@value + delta.to_i) }
end
Also aliased as: up
up(delta = 1)
Alias for: increment
update() { |value| ... } click to toggle source

@!macro atomic_fixnum_method_update

# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 54
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 18
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 23
def value=(value)
  synchronize { ns_set(value) }
end

Protected Instance Methods

ns_initialize(initial) click to toggle source

@!visibility private

# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 63
def ns_initialize(initial)
  ns_set(initial)
end

Private Instance Methods

ns_set(value) click to toggle source

@!visibility private

# File lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb, line 70
def ns_set(value)
  Utility::NativeInteger.ensure_integer_and_bounds value
  @value = value
end