21#ifndef ANTARES_CONCURRENCY_H
22#define ANTARES_CONCURRENCY_H
26#include "yuni/job/queue/service.h"
28namespace Antares::Concurrency
31using Task = std::function<void()>;
32using TaskFuture = std::future<void>;
40[[nodiscard]] TaskFuture AddTask(Yuni::Job::QueueService& threadPool,
42 Yuni::Job::Priority priority = Yuni::Job::priorityDefault);
53[[nodiscard]] TaskFuture AddTask(Yuni::Job::QueueService& threadPool,
54 const std::shared_ptr<T>& task,
55 Yuni::Job::Priority priority = Yuni::Job::priorityDefault);
76 void add(TaskFuture&& f);
90 std::vector<TaskFuture> futures_;
107 functionObject_(functionObject)
113 (*functionObject_)();
117 std::shared_ptr<T> functionObject_;
123TaskFuture AddTask(Yuni::Job::QueueService& threadPool,
124 const std::shared_ptr<T>& task,
125 Yuni::Job::Priority priority)
128 return AddTask(threadPool, wrappedTask, priority);
Definition concurrency.h:104
Utility class to gather futures to wait for.
Definition concurrency.h:61
void add(TaskFuture &&f)
Adds one future to be monitored by this set.
Definition concurrency.cpp:71
void join()
Waits for completion of all added futures.
Definition concurrency.cpp:77