LeechCraft 0.6.70-19214-g121e5318a7
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
inparallel.h File Reference
#include <exception>
#include <ranges>
#include <type_traits>
#include <QVector>
#include <util/sll/void.h>
#include "../threadsconfig.h"
#include "task.h"
Include dependency graph for inparallel.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  LC
namespace  LC::Util
namespace  LC::Util::detail

Functions

void LC::Util::detail::HandleSubsequentException ()
void LC::Util::detail::SaveFirst (std::exception_ptr &ex)
template<typename T, template< typename > typename... Exts, bool IsRet = !std::is_void_v<T>, typename RetType = std::conditional_t<IsRet, QVector<T>, void>>
Task< RetType, Exts... > LC::Util::detail::JoinAll (QVector< Task< T, Exts... > > tasks, std::exception_ptr ex)
template<typename T, template< typename > typename... Exts>
auto LC::Util::InParallel (QVector< Task< T, Exts... > > tasks)
 Awaits all the tasks, collecting their results in order.
template<typename T, template< typename > typename... Exts>
auto LC::Util::InParallel (std::initializer_list< Task< T, Exts... > > tasks)
 Same as InParallel(QVector<Task<T, Exts...>>) for a braced list.
template<std::ranges::range Inputs, typename F, typename... MkTaskArgs>
auto LC::Util::InParallel (Inputs inputs, F mkTask, MkTaskArgs &&... mkTaskArgs)
 Starts a task per input and awaits them all.
template<typename... Ts, template< typename > typename... Exts>
Task< std::tuple< Ts... >, Exts... > LC::Util::InParallel (Task< Ts, Exts... >... tasks)
 Awaits the tasks of different result types.
auto LC::Util::NCopies (qsizetype count, auto taskFactory)
 Starts count tasks via taskFactory and awaits them all.