| 74 | } |
| 75 | |
| 76 | std::future<void> ParallelTaskManager::AddTasks(const ParallelTasks& tasks) |
| 77 | { |
| 78 | // HEAP ALLOC: Create counter and promise. |
| 79 | auto counter = std::make_shared<std::atomic<int>>(); |
| 80 | auto promise = std::make_shared<std::promise<void>>(); |
| 81 | |
| 82 | // Add group tasks. |
| 83 | counter->store((int)tasks.size(), std::memory_order_release); |
| 84 | for (const auto& task : tasks) |
| 85 | AddTask(task, counter, promise); |
| 86 | |
| 87 | // Notify available threads to handle tasks. |
| 88 | _taskCond.notify_all(); |
| 89 | |
| 90 | // Return future to wait on task group completion if needed. |
| 91 | return promise->get_future(); |
| 92 | } |
| 93 | |
| 94 | std::future<void> ParallelTaskManager::AddTasks(int elementCount, const std::function<void(int, int)>& splitTask) |
| 95 | { |
no test coverage detected