| 1208 | // Never allocates. Thread-safe. |
| 1209 | template<typename It> |
| 1210 | size_t try_dequeue_bulk(It itemFirst, size_t max) |
| 1211 | { |
| 1212 | size_t count = 0; |
| 1213 | for (auto ptr = producerListTail.load(std::memory_order_acquire); ptr != nullptr; ptr = ptr->next_prod()) { |
| 1214 | count += ptr->dequeue_bulk(itemFirst, max - count); |
| 1215 | if (count == max) { |
| 1216 | break; |
| 1217 | } |
| 1218 | } |
| 1219 | return count; |
| 1220 | } |
| 1221 | |
| 1222 | // Attempts to dequeue several elements from the queue using an explicit consumer token. |
| 1223 | // Returns the number of items actually dequeued. |
nothing calls this directly
no test coverage detected