Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
tasktree.cpp File Reference

(868fc456acba412f5a1d4a39fa504fc890fda205)

#include "tasktree.h"
#include "barrier.h"
#include "conditional.h"
#include <QtCore/QDebug>
#include <QtCore/QEventLoop>
#include <QtCore/QFutureWatcher>
#include <QtCore/QHash>
#include <QtCore/QMetaEnum>
#include <QtCore/QMutex>
#include <QtCore/QPointer>
#include <QtCore/QPromise>
#include <QtCore/QSet>
#include <QtCore/QTime>
#include <QtCore/QTimer>
Include dependency graph for tasktree.cpp:

Go to the source code of this file.

Classes

class  Tasking::Guard
class  Tasking::GuardLocker
class  Tasking::LoopThreadData
class  Tasking::LoopData
class  Tasking::StorageThreadData
class  Tasking::StorageData
class  Tasking::ExecutionContextActivator
class  Tasking::ContainerNode
class  Tasking::TaskNode
class  Tasking::TaskTreePrivate
struct  Tasking::TaskTreePrivate::StorageHandler
class  Tasking::RuntimeIteration
class  Tasking::RuntimeContainer
class  Tasking::RuntimeTask
struct  Tasking::TimerData
struct  Tasking::TimerThreadData

Namespaces

namespace  Tasking
 \inmodule TaskingSolution

Macros

#define QT_STRING(cond)
#define QT_ASSERT(cond, action)
#define QT_CHECK(cond)

Typedefs

using Tasking::StoragePtr = void *
using Tasking::TimeoutCallback = std::function<void()>

Functions

GroupItem Tasking::parallelLimit (int limit)
 Constructs a group's element describing the \l{Execution Mode}{execution mode}.
GroupItem Tasking::workflowPolicy (WorkflowPolicy policy)
 Constructs a group's \l {Workflow Policy} {workflow policy} element for a given policy.
Group Tasking::operator>> (const For &forItem, const Do &doItem)
Group Tasking::operator>> (const When &whenItem, const Do &doItem)
static TaskTreeTasking::activeTaskTree ()
DoneResult Tasking::toDoneResult (bool success)
static SetupResult Tasking::toSetupResult (bool success)
static DoneResult Tasking::toDoneResult (DoneWith doneWith)
static DoneWith Tasking::toDoneWith (DoneResult result)
static QString Tasking::currentTime ()
static QString Tasking::logHeader (const QString &logName)
Group Tasking::operator! (const ExecutableItem &item)
Group Tasking::operator&& (const ExecutableItem &first, const ExecutableItem &second)
Group Tasking::operator|| (const ExecutableItem &first, const ExecutableItem &second)
Group Tasking::operator&& (const ExecutableItem &item, DoneResult result)
Group Tasking::operator|| (const ExecutableItem &item, DoneResult result)
static bool Tasking::initialSuccessBit (WorkflowPolicy workflowPolicy)
static bool Tasking::isProgressive (RuntimeContainer *container)
static std::vector< TaskNodeTasking::createChildren (TaskTreePrivate *taskTreePrivate, const GroupItems &children)
static bool Tasking::shouldCall (CallDoneIf callDoneIf, DoneWith result)
static void Tasking::removeTimerId (int timerId)
static void Tasking::handleTimeout (int timerId)
static int Tasking::scheduleTimeout (milliseconds timeout, QObject *context, const TimeoutCallback &callback)
ExecutableItem Tasking::timeoutTask (const std::chrono::milliseconds &timeout, DoneResult result)

Variables

const GroupItem Tasking::sequential = parallelLimit(1)
const GroupItem Tasking::parallel = parallelLimit(0)
const GroupItem Tasking::parallelIdealThreadCountLimit = parallelLimit(qMax(QThread::idealThreadCount() - 1, 1))
const GroupItem Tasking::stopOnError = workflowPolicy(WorkflowPolicy::StopOnError)
const GroupItem Tasking::continueOnError = workflowPolicy(WorkflowPolicy::ContinueOnError)
const GroupItem Tasking::stopOnSuccess = workflowPolicy(WorkflowPolicy::StopOnSuccess)
const GroupItem Tasking::continueOnSuccess = workflowPolicy(WorkflowPolicy::ContinueOnSuccess)
const GroupItem Tasking::stopOnSuccessOrError = workflowPolicy(WorkflowPolicy::StopOnSuccessOrError)
const GroupItem Tasking::finishAllAndSuccess = workflowPolicy(WorkflowPolicy::FinishAllAndSuccess)
const GroupItem Tasking::finishAllAndError = workflowPolicy(WorkflowPolicy::FinishAllAndError)
const GroupItem Tasking::nullItem = Group {}
const ExecutableItem Tasking::successItem = Group { finishAllAndSuccess }
const ExecutableItem Tasking::errorItem = Group { finishAllAndError }
static thread_local QList< TaskTree * > Tasking::s_activeTaskTrees = {}
static constexpr QLatin1StringView Tasking::s_activeStorageWarning
static thread_local TimerThreadData Tasking::s_threadTimerData = {}

Macro Definition Documentation

◆ QT_ASSERT

#define QT_ASSERT ( cond,
action )
Value:
if (Q_LIKELY(cond)) {} else { QT_STRING(#cond); action; } do {} while (0)
#define QT_STRING(cond)
Definition barrier.cpp:12
#define Q_LIKELY(x)

Definition at line 31 of file tasktree.cpp.

◆ QT_CHECK

#define QT_CHECK ( cond)
Value:
if (cond) {} else { QT_STRING(#cond); } do {} while (0)

Definition at line 32 of file tasktree.cpp.

◆ QT_STRING

#define QT_STRING ( cond)
Value:
qDebug("SOFT ASSERT: \"%s\" in %s: %s", cond, __FILE__, QT_STRINGIFY(__LINE__))
#define qDebug
Definition qlogging.h:168
#define QT_STRINGIFY(x)

Definition at line 30 of file tasktree.cpp.