33 #include <type_traits>
35 #include "function2/function2.hpp"
36 #include "concurrentqueue.h"
50 ThreadPool(
unsigned int threads = std::thread::hardware_concurrency(),
bool little =
false);
56 template<
typename Func,
typename... Args, std::enable_if_t<std::is_invocable_v<Func&&, Args&&...>,
bool> =
true>
57 auto execute(Func&& func, Args&&... args) -> std::future<decltype(func(args...))>;
65 moodycamel::ConcurrentQueue<fu2::unique_function<void()>> _tasks;
66 std::atomic<unsigned int> _size;
67 std::vector<std::thread> _pool;
68 std::condition_variable _new_task;
76 #include <jevois/Util/details/ThreadPoolImpl.H>