def try_await_lock(table, i)
if table && i >= 0 && i < table.size
spins = SPIN_LOCK_ATTEMPTS
randomizer = base_randomizer = Util::XorShiftRandom.get
while equal?(table.volatile_get(i)) && self.class.locked_hash?(my_hash = hash)
if spins >= 0
if (randomizer = (randomizer >> 1)).even?
if (spins -= 1) == 0
Thread.pass
else
randomizer = base_randomizer = Util::XorShiftRandom.xorshift(base_randomizer) if randomizer.zero?
end
end
elsif cas_hash(my_hash, my_hash | WAITING)
force_aquire_lock(table, i)
break
end
end
end
end