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