class Spectator::AtomicNumber

Thread safe number operations

Public Class Methods

new(init) click to toggle source
# File lib/spectator/atomic_number.rb, line 4
def initialize(init)
  @value = init
  @lock = Mutex.new
end

Public Instance Methods

add_and_get(amount) click to toggle source
# File lib/spectator/atomic_number.rb, line 33
def add_and_get(amount)
  @lock.synchronize { @value += amount }
end
get() click to toggle source
# File lib/spectator/atomic_number.rb, line 13
def get
  @lock.synchronize { @value }
end
get_and_add(amount) click to toggle source
# File lib/spectator/atomic_number.rb, line 25
def get_and_add(amount)
  @lock.synchronize do
    tmp = @value
    @value += amount
    tmp
  end
end
get_and_set(value) click to toggle source
# File lib/spectator/atomic_number.rb, line 17
def get_and_set(value)
  @lock.synchronize do
    tmp = @value
    @value = value
    tmp
  end
end
max(value) click to toggle source
# File lib/spectator/atomic_number.rb, line 37
def max(value)
  v = value.to_f
  @lock.synchronize do
    @value = v if v > @value || @value.nan?
  end
  @value
end
set(value) click to toggle source
# File lib/spectator/atomic_number.rb, line 9
def set(value)
  @lock.synchronize { @value = value }
end
to_s() click to toggle source
# File lib/spectator/atomic_number.rb, line 45
def to_s
  "AtomicNumber{#{@value}}"
end