Revision control

Copy as Markdown

// Copyright (C) 2020 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\class QtConcurrent::QTaskBuilder
\inmodule QtConcurrent
\brief The QTaskBuilder class is used for adjusting task parameters.
\since 6.0
\ingroup thread
The template parameter \a Task specifies the callable type, and \a Args
specifies the argument types that the task will be invoked with.
It's not possible to create an object of this class manually. See
\l {Concurrent Task} for more details and usage examples.
*/
/*!
\fn template <class Task, class ...Args> [[nodiscard]] QFuture<InvokeResultType> QtConcurrent::QTaskBuilder<Task, Args...>::spawn()
Runs the task in a separate thread and returns a future object immediately.
This is a non-blocking call. The task might not start immediately.
*/
/*!
\fn template <class Task, class ...Args> void QtConcurrent::QTaskBuilder<Task, Args...>::spawn(QtConcurrent::FutureResult)
Runs the task in a separate thread. This is a non-blocking call.
The task might not start immediately.
*/
/*!
\fn template <class Task, class ...Args> template <class ...ExtraArgs> [[nodiscard]] QTaskBuilder<Task, ExtraArgs...> QtConcurrent::QTaskBuilder<Task, Args...>::withArguments(ExtraArgs &&...args)
Sets the arguments \a args the task will be invoked with. The code is ill-formed
(causes compilation errors) if:
\list
\li This function is invoked more than once.
\li The arguments count is zero.
\endlist
*/
/*!
\fn template <class Task, class ...Args> [[nodiscard]] QTaskBuilder<Task, Args...> &QtConcurrent::QTaskBuilder<Task, Args...>::onThreadPool(QThreadPool &newThreadPool)
Sets the thread pool \a newThreadPool that the task will be invoked on.
*/
/*!
\fn template <class Task, class ...Args> [[nodiscard]] QTaskBuilder<Task, Args...> &QtConcurrent::QTaskBuilder<Task, Args...>::withPriority(int newPriority)
Sets the priority \a newPriority that the task will be invoked with.
*/
/*!
\typedef QtConcurrent::InvokeResultType
\relates QtConcurrent::QTaskBuilder
The simplified definition of this type looks like this:
\code
template <class Task, class ...Args>
using InvokeResultType = std::invoke_result_t<std::decay_t<Task>, std::decay_t<Args>...>;
\endcode
The real implementation also contains a compile-time check for
whether the task can be invoked with the specified arguments or not.
*/
/*!
\enum QtConcurrent::FutureResult
This enum type is used to invoke a special overload of
QtConcurrent::QTaskBuilder::spawn(QtConcurrent::FutureResult)
that doesn't return a future object.
\value Ignore
An auxiliary tag which introduced to improve code
readability.
*/