35 { __atomic_store_n(&_free_hint, hint, __ATOMIC_RELAXED); }
38 bool is_allocated(
long item)
const noexcept
39 {
return _bits[item]; }
41 long hint()
const {
return __atomic_load_n(&_free_hint, __ATOMIC_RELAXED); }
43 bool alloc(
long item)
noexcept
45 return !_bits.atomic_get_and_set(item);
48 void free(
long item)
noexcept
53 _bits.atomic_clear_bit(item);
56 Item_alloc_base(
long size,
void *mem) noexcept
57 : _capacity(size), _free_hint(0), _bits(mem)
62 long free_hint = hint();
64 for (
long i = free_hint; i < _capacity; ++i)
73 for (
long i = 0; i < free_hint && i < _capacity; ++i)
83 long size()
const noexcept