class Spectator::AtomicNumber

Thread safe number operations

Public Class Methods

new(init) click to toggle source
# File lib/spectator/atomic_number.rb, line 6
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 35
def add_and_get(amount)
  @lock.synchronize { @value += amount }
end
get() click to toggle source
# File lib/spectator/atomic_number.rb, line 15
def get
  @lock.synchronize { @value }
end
get_and_add(amount) click to toggle source
# File lib/spectator/atomic_number.rb, line 27
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 19
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 39
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 11
def set(value)
  @lock.synchronize { @value = value }
end
to_s() click to toggle source
# File lib/spectator/atomic_number.rb, line 47
def to_s
  "AtomicNumber{#{@value}}"
end