class ThreadSafe::Util::VolatileTuple
arr.volatile_get(0) # => :bar
arr.cas(0, :foo, :bar) # => true
arr.volatile_get(0) # => :foo
arr.volatile_set(0, :foo)
arr = VolatileTuple.new(16)
Usage:
A fixed size array with volatile volatile getters/setters.
def compare_and_set(i, old_value, new_value)
def compare_and_set(i, old_value, new_value) @tuple[i].compare_and_set(old_value, new_value) end
def each
def each @tuple.each {|ref| yield ref.get} end
def initialize(size)
def initialize(size) @tuple = tuple = Tuple.new(size) i = 0 while i < size tuple[i] = AtomicReference.new i += 1 end end
def size
def size @tuple.size end
def volatile_get(i)
def volatile_get(i) @tuple[i].get end
def volatile_set(i, value)
def volatile_set(i, value) @tuple[i].set(value) end