class Concurrent::ThreadSafe::Util::PowerOfTwoTuple
@!visibility private
Public Class Methods
new(size)
click to toggle source
Calls superclass method
Concurrent::Tuple::new
# File lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb, line 15 def initialize(size) raise ArgumentError, "size must be a power of 2 (#{size.inspect} provided)" unless size > 0 && size & (size - 1) == 0 super(size) end
Public Instance Methods
hash_to_index(hash)
click to toggle source
# File lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb, line 20 def hash_to_index(hash) (size - 1) & hash end
next_in_size_table()
click to toggle source
# File lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb, line 32 def next_in_size_table self.class.new(size << 1) end
volatile_get_by_hash(hash)
click to toggle source
# File lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb, line 24 def volatile_get_by_hash(hash) volatile_get(hash_to_index(hash)) end
volatile_set_by_hash(hash, value)
click to toggle source
# File lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb, line 28 def volatile_set_by_hash(hash, value) volatile_set(hash_to_index(hash), value) end