MCPcopy Create free account
hub / github.com/bshoshany/thread-pool / enqueue_sequence

Function enqueue_sequence

include/BS_thread_pool.hpp:2228–2244  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2226 */
2227 template <typename T, typename F, typename R, bool submit, typename N = std::conditional_t<submit, multi_future<R>, void>>
2228 [[nodiscard]] N enqueue_sequence(const T first_index, const T index_after_last, F&& sequence, const priority_t priority = 0)
2229 {
2230 if (index_after_last > first_index)
2231 {
2232 using sequence_task_t = sequence_task<T, F, R>;
2233 const std::shared_ptr<std::decay_t<F>> sequence_ptr = std::make_shared<std::decay_t<F>>(std::forward<F>(sequence));
2234 std::vector<std::conditional_t<submit, sequence_task_t, task_t>> all_tasks;
2235 all_tasks.reserve(static_cast<std::size_t>(index_after_last - first_index));
2236 for (T i = first_index; i < index_after_last; ++i)
2237 all_tasks.emplace_back(sequence_task_t{sequence_ptr, i});
2238 if constexpr (submit)
2239 return submit_bulk(all_tasks, priority);
2240 else
2241 detach_bulk(all_tasks, priority);
2242 }
2243 return N();
2244 }
2245
2246 /**
2247 * @brief Pop a task from the queue.

Callers

nothing calls this directly

Calls 2

submit_bulkFunction · 0.85
detach_bulkFunction · 0.85

Tested by

no test coverage detected