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
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