Lines Matching refs:k
111 size_type prepare_page( ticket_type k, queue_rep_type& base, page_allocator_type page_allocator, in prepare_page() argument
114 k &= -queue_rep_type::n_queue; in prepare_page()
115 size_type index = modulo_power_of_two(k / queue_rep_type::n_queue, items_per_page); in prepare_page()
121 invalidate_page( k ); in prepare_page()
126 spin_wait_until_my_turn(tail_counter, k, base); in prepare_page()
145 … void push( ticket_type k, queue_rep_type& base, queue_allocator_type& allocator, Args&&... args ) in push() argument
149 size_type index = prepare_page(k, base, page_allocator, p); in push()
169 void abort_push( ticket_type k, queue_rep_type& base, queue_allocator_type& allocator ) { in abort_push() argument
171 prepare_page(k, base, allocator, p); in abort_push()
176 bool pop( void* dst, ticket_type k, queue_rep_type& base, queue_allocator_type& allocator ) { in pop() argument
177 k &= -queue_rep_type::n_queue; in pop()
178 spin_wait_until_eq(head_counter, k); in pop()
180 spin_wait_while_eq(tail_counter, k); in pop()
184 size_type index = modulo_power_of_two( k/queue_rep_type::n_queue, items_per_page ); in pop()
189 k + queue_rep_type::n_queue, index == items_per_page - 1 ? p : nullptr ); in pop()
263 void invalidate_page( ticket_type k ) { in invalidate_page() argument
268 tail_counter.store(k + queue_rep_type::n_queue + 1, std::memory_order_relaxed); in invalidate_page()
340 …void spin_wait_until_my_turn( std::atomic<ticket_type>& counter, ticket_type k, queue_rep_type& rb… in spin_wait_until_my_turn() argument
343 if (c == k) return; in spin_wait_until_my_turn()
371 micro_queue_pop_finalizer( Container& queue, Allocator& alloc, ticket_type k, padded_page* p ) : in micro_queue_pop_finalizer() argument
372 my_ticket_type(k), my_queue(queue), my_page(p), allocator(alloc) in micro_queue_pop_finalizer()
488 static size_type index( ticket_type k ) { in index()
489 return k * phi % n_queue; in index()
492 micro_queue_type& choose( ticket_type k ) { in choose()
494 return array[index(k)]; in choose()
545 std::size_t k = my_head_counter; in advance() local
548 get_item(tmp, k); in advance()
551 … std::size_t i = modulo_power_of_two(k / queue_rep_type::n_queue, my_queue_rep->items_per_page); in advance()
553 padded_page*& root = my_array[queue_rep_type::index(k)]; in advance()
557 my_head_counter = ++k; in advance()
558 if (!get_item(my_item, k)) advance(); in advance()
566 bool get_item( Value*& item, std::size_t k ) { in get_item() argument
567 if (k == my_queue_rep->tail_counter.load(std::memory_order_relaxed)) { in get_item()
571 padded_page* p = my_array[queue_rep_type::index(k)]; in get_item()
573 … std::size_t i = modulo_power_of_two(k / queue_rep_type::n_queue, my_queue_rep->items_per_page); in get_item()