public
Last active

Ruby volatile APIs

  • Download Gist
gistfile1.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
# using accessors:
 
attr_volatile :table, :size_control
 
def check_for_resize
while (current_table = table) && MAX_CAP > (table_size = current_table.size) && RESIZING != (size_ctrl = size_control) && size_ctrl < @counter.sum
try_in_resize_lock(current_table, size_ctrl) do
self.table = rebuild(current_table)
(table_size << 1) - (table_size >> 1) # 75% load factor
end
end
end
 
# using i-vars:
 
volatile :@table, :@size_control
 
def check_for_resize
while (table = @table) && MAX_CAP > (table_size = table.size) && RESIZING != (size_control = @size_control) && size_control < @counter.sum
try_in_resize_lock(table, size_control) do
@table = rebuild(table)
(table_size << 1) - (table_size >> 1) # 75% load factor
end
end
end

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.