class ThreadSafe::Util::VolatileTuple

A fixed size array with volatile volatile getters/setters. Usage:

arr = VolatileTuple.new(16)
arr.volatile_set(0, :foo)
arr.volatile_get(0)    # => :foo
arr.cas(0, :foo, :bar) # => true
arr.volatile_get(0)    # => :bar

Constants

Tuple

Public Class Methods

new(size) click to toggle source
# File lib/thread_safe/util/volatile_tuple.rb, line 15
def initialize(size)
  @tuple = tuple = Tuple.new(size)
  i = 0
  while i < size
    tuple[i] = AtomicReference.new
    i += 1
  end
end

Public Instance Methods

cas(i, old_value, new_value)
Alias for: compare_and_set
compare_and_set(i, old_value, new_value) click to toggle source
# File lib/thread_safe/util/volatile_tuple.rb, line 32
def compare_and_set(i, old_value, new_value)
  @tuple[i].compare_and_set(old_value, new_value)
end
Also aliased as: cas
each() { |get| ... } click to toggle source
# File lib/thread_safe/util/volatile_tuple.rb, line 41
def each
  @tuple.each {|ref| yield ref.get}
end
size() click to toggle source
# File lib/thread_safe/util/volatile_tuple.rb, line 37
def size
  @tuple.size
end
volatile_get(i) click to toggle source
# File lib/thread_safe/util/volatile_tuple.rb, line 24
def volatile_get(i)
  @tuple[i].get
end
volatile_set(i, value) click to toggle source
# File lib/thread_safe/util/volatile_tuple.rb, line 28
def volatile_set(i, value)
  @tuple[i].set(value)
end