QtTaskTree Namespace
QtTaskTree 네임스페이스에는 TaskTree 모듈의 모든 클래스와 전역 함수가 포함되어 있습니다. 더 보기...
| 헤더: | #include <QtTaskTree> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree) target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| 다음부터: | Qt 6.11 |
| 상태: | 기술 미리보기 |
이 네임스페이스는 기술 미리보기 단계에 있으며 변경될 수 있습니다.
클래스
(technology preview) class | Do |
(technology preview) class | Else |
(technology preview) class | ElseIf |
(technology preview) class | ExecutableItem |
(technology preview) class | ExecutionMode |
(technology preview) class | For |
(technology preview) class | Forever |
(technology preview) class | ForeverIterator |
(technology preview) class | Group |
(technology preview) class | GroupItem |
(technology preview) class | If |
(technology preview) class | Iterator |
(technology preview) class | ListIterator |
(technology preview) struct | ObjectSignal |
(technology preview) class | ParallelLimit |
(technology preview) class | QBarrier |
(technology preview) class | QCustomTask |
(technology preview) class | QDefaultTaskAdapter |
(technology preview) class | QMappedTaskTreeRunner |
(technology preview) class | QNetworkReplyWrapper |
(technology preview) class | QParallelTaskTreeRunner |
(technology preview) class | QProcessTaskDeleter |
(technology preview) class | QSequentialTaskTreeRunner |
(technology preview) class | QSingleTaskTreeRunner |
(technology preview) class | QStartedBarrier |
(technology preview) class | QSyncTask |
(technology preview) class | QTaskInterface |
(technology preview) class | QTaskTree |
(technology preview) class | QTcpSocketWrapper |
(technology preview) class | QThreadFunction |
(technology preview) class | QThreadFunctionBase |
(technology preview) class | RepeatIterator |
(technology preview) class | Storage |
(technology preview) class | Then |
(technology preview) class | UntilIterator |
(technology preview) class | When |
형
| BarrierKickerGetter | |
| flags | CallDone |
| enum class | CallDoneFlag { Never, OnSuccess, OnError, OnCancel, Always } |
| enum class | DoneResult { Success, Error } |
| enum class | DoneWith { Success, Error, Cancel } |
| GroupItems | |
| QBarrierTask | |
| QNetworkReplyWrapperTask | |
| QProcessTask | |
| QStoredBarrier | |
| QTaskTreeTask | |
| QTcpSocketWrapperTask | |
| QThreadFunctionTask | |
| QTimeoutTask | |
| enum class | SetupResult { Continue, StopWithSuccess, StopWithError } |
| TreeDoneHandler | |
| TreeSetupHandler | |
| enum class | WorkflowPolicy { StopOnError, ContinueOnError, StopOnSuccess, ContinueOnSuccess, StopOnSuccessOrError, …, FinishAllAndError } |
변수
| const QtTaskTree::GroupItem | continueOnError |
| const QtTaskTree::GroupItem | continueOnSuccess |
| const QtTaskTree::ExecutableItem | errorItem |
| const QtTaskTree::GroupItem | finishAllAndError |
| const QtTaskTree::GroupItem | finishAllAndSuccess |
| const QtTaskTree::GroupItem | nullItem |
| const QtTaskTree::ExecutionMode | parallel |
| const QtTaskTree::ExecutionMode | parallelIdealThreadCountLimit |
| const QtTaskTree::ExecutionMode | sequential |
| const QtTaskTree::GroupItem | stopOnError |
| const QtTaskTree::GroupItem | stopOnSuccess |
| const QtTaskTree::GroupItem | stopOnSuccessOrError |
| const QtTaskTree::ExecutableItem | successItem |
함수
| QtTaskTree::ExecutableItem | barrierAwaiterTask(const QtTaskTree::QStoredBarrier &storedBarrier) |
| QtTaskTree::ObjectSignal<std::decay_t<Signal>> | makeObjectSignal(typename QtPrivate::FunctionPointer<Signal>::Object *object, Signal &&signal) |
| QtTaskTree::GroupItem | onGroupDone(Handler &&handler, QtTaskTree::CallDone callDone = CallDoneFlag::Always) |
| QtTaskTree::GroupItem | onGroupSetup(Handler &&handler) |
| QtTaskTree::ExecutableItem | signalAwaiterTask(const typename QtPrivate::FunctionPointer<Signal>::Object *sender, Signal signal) |
| QtTaskTree::ExecutableItem | timeoutTask(const std::chrono::milliseconds &timeout, QtTaskTree::DoneResult result = DoneResult::Error) |
| QtTaskTree::GroupItem | workflowPolicy(QtTaskTree::WorkflowPolicy policy) |
클래스
Do 클래스
For 및 When 구문과 함께 사용되는 본문 요소입니다. 더 보기...
class Else
조건문에서 사용되는 "else" 요소입니다. 더 보기...
class ElseIf
조건식에서 사용되는 "else if" 요소입니다. 더 보기...
class ExecutableItem
실행 가능한 작업 항목의 기본 클래스입니다. 더 보기...
class ExecutionMode
실행 모드를 설명하는 그룹 요소입니다. 더 보기...
class For
for 루프 요소입니다. 더 보기...
클래스 Forever
하위 작업의 무한 루프. 더 보기...
class ForeverIterator
For 요소 내부에서 사용되는 무한 이터레이터. 더 보기...
Group 클래스
Group은 중첩된 비동기 작업 트리를 실행하고 처리하는 방법을 설명하는 선언적 레시피를 구성하는 기본 요소를 나타냅니다. 더 보기...
class GroupItem
GroupItem은 모든 그룹( Group)의 일부가 될 수 있는 기본 요소를 나타냅니다. 더 보기...
class If
조건문에서 사용되는 “if” 요소입니다. 더 보기...
class Iterator
For 요소 내부에서 반복자로 사용되는 기본 클래스입니다. 더 보기...
class ListIterator
For 요소 내에서 사용되는 리스트 이터레이터입니다. 더 보기...
class ObjectSignal
QObject 의 서브클래스와 해당 신호를 설명하는 구조체입니다. 더 보기...
class ParallelLimit
사용자 정의 제한이 적용된 병렬 실행 모드입니다. 더 보기...
class QBarrier
요청 시 완료되는 비동기 태스크입니다. 더 보기...
class QCustomTask
사용자 정의 태스크 항목을 선언하고 해당 설정 및 완료 핸들러를 정의하는 데 사용되는 클래스 템플릿입니다. 더 보기...
class QDefaultTaskAdapter
QCustomTask 에서 사용되는 기본 태스크 어댑터를 제공하는 클래스 템플릿입니다. 더 보기...
class QMappedTaskTreeRunner
지정된 Key 유형을 갖는 매핑된 작업 트리 실행 컨트롤러입니다. 더 보기...
class QNetworkReplyWrapper
QNetworkReply 및 QNetworkAccessManager 를 감싸는 래퍼입니다. 더 보기...
class QParallelTaskTreeRunner
병렬 태스크 트리 실행 컨트롤러입니다. 더 보기...
class QProcessTaskDeleter
QProcess 용 사용자 정의 삭제기로, QProcessTask 에서 사용됩니다. 더 보기...
클래스 QSequentialTaskTreeRunner
순차적 태스크 트리 실행 컨트롤러입니다. 더 보기...
class QSingleTaskTreeRunner
단일 태스크 트리 실행 컨트롤러입니다. 더 보기...
클래스 QStartedBarrier
지정된 제한을 가진, 시작된 QBarrier 입니다. 더 보기...
class QSyncTask
다른 태스크들 사이에서 사용자 정의 핸들러를 동기식으로 실행합니다. 더 보기...
class QTaskInterface
QTaskInterface는 사용자 정의 태스크의 인터페이스를 적용할 때 사용되는 헬퍼 클래스입니다. 더 보기...
class QTaskTree
QTaskTree 클래스는 선언적 방식으로 정의된 비동기 태스크 트리를 실행합니다. 더 보기...
class QTcpSocketWrapper
QTcpSocket 를 감싸는 래퍼입니다. 더 보기...
class QThreadFunction
QtConcurrent::run()을 통해 별도의 스레드에서 함수의 실행을 제어하는 클래스 템플릿입니다. 더 보기...
class QThreadFunctionBase
QThreadFunction 클래스 템플릿의 기본 클래스입니다. 더 보기...
class RepeatIterator
For element 내부에서 사용되는 반복 이터레이터입니다. 더 보기...
class Storage
실행 중인 작업 트리 내에서 사용자 정의 데이터 교환을 위한 클래스 템플릿입니다. 더 보기...
class Then
조건식에서 사용되는 "then" 요소입니다. 더 보기...
class UntilIterator
For 요소 내부에서 사용되는 조건부 이터레이터입니다. 더 보기...
class When
배리어가 진행될 때까지 본문의 실행을 지연시키는 요소입니다. 더 보기...
유형 설명서
[alias] BarrierKickerGetter
` QStoredBarrier `을 인수로 받아 ` ExecutableItem`을 반환하는 함수, 즉 ` std::function<ExecutableItem(const QStoredBarrier &)>`에 대한 타입 별칭으로, ` When ` 생성자 내에서 사용됩니다.
enum class QtTaskTree::CallDoneFlag
flags QtTaskTree::CallDone
이 열거형은 ` onGroupDone()` 요소 또는 사용자 정의 태스크의 생성자에 대한 선택적 인자입니다. 이 인자는 그룹이나 태스크의 완료 핸들러가 언제 호출되어야 하는지 태스크 트리에 지시합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QtTaskTree::CallDoneFlag::Never | 0 | done 핸들러는 호출되지 않습니다. |
QtTaskTree::CallDoneFlag::OnSuccess | 1 << 0 | 실행이 성공한 후, 즉 DoneWith::Success 인 경우에만 완료 핸들러가 호출됩니다. |
QtTaskTree::CallDoneFlag::OnError | 1 << 1 | done 핸들러는 실행이 실패한 후, 즉 ` DoneWith::Error`인 경우에만 호출됩니다. |
QtTaskTree::CallDoneFlag::OnCancel | 1 << 2 | done 핸들러는 실행이 취소된 후, 즉 DoneWith::Cancel 일 때만 호출됩니다. |
QtTaskTree::CallDoneFlag::Always | OnSuccess | OnError | OnCancel | done 핸들러는 항상 호출됩니다. |
CallDone 유형은 QFlags<CallDoneFlag>에 대한 typedef입니다. 이 유형은 CallDoneFlag 값들의 OR 조합을 저장합니다.
enum class QtTaskTree::DoneResult
이 열거형은 그룹이나 태스크의 완료 핸들러 함수에서 선택적으로 반환됩니다. 완료 핸들러가 아무런 값도 반환하지 않을 때, 즉 반환 유형이 ` void`인 경우, 최종 반환 값은 실행 중인 태스크 트리에서 자동으로 추론되어 상위 그룹에 보고됩니다.
완료 핸들러가 `DoneResult`를 반환하는 경우, 핸들러 내부에서 최종 반환 값을 조정할 수 있습니다.
그룹의 완료 핸들러에서 DoneResult가 반환되면, 그룹의 워크플로 정책은 무시됩니다.
이 열거형은 TaskInterface::done() 시그널 내부에서도 사용되며, 태스크가 성공으로 완료되었는지 오류로 완료되었는지를 나타냅니다.
| 상수 | 값 | 설명 |
|---|---|---|
QtTaskTree::DoneResult::Success | 0 | 그룹 또는 태스크의 실행이 성공적으로 종료됩니다. |
QtTaskTree::DoneResult::Error | 1 | 그룹 또는 태스크의 실행이 오류로 종료됩니다. |
enum class QtTaskTree::DoneWith
이 열거형은 그룹 또는 작업의 완료 핸들러에 대한 선택적 인자입니다. 이는 그룹이나 작업이 성공 또는 오류로 완료되었는지, 아니면 취소되었는지를 나타냅니다.
또한 ` QTaskTree::done()` 신호 내부의 인수로 사용되어, ` QTaskTree ` 실행의 최종 결과를 나타냅니다.
| 상수 | 값 | 설명 |
|---|---|---|
QtTaskTree::DoneWith::Success | 0 | 그룹 또는 태스크의 실행이 성공적으로 끝났습니다. |
QtTaskTree::DoneWith::Error | 1 | 그룹 또는 작업의 실행이 오류로 종료되었습니다. |
QtTaskTree::DoneWith::Cancel | 2 | 그룹 또는 작업의 실행이 취소되었습니다. 이는 사용자가 실행 중인 작업 트리에 대해 ` QTaskTree::cancel()`를 호출하거나, 그룹의 워크플로 정책에 따라 실행 중인 하위 항목 중 일부가 취소될 때 발생합니다. 그룹 또는 작업의 실행이 취소된 경우, 핸들러에서 ` DoneResult `를 반환하여 완료 핸들러의 최종 결과를 조정하는 것은 아무런 효과가 없습니다. |
[alias] QtTaskTree::GroupItems
[alias] QBarrierTask
레시피 내에서 사용할 QCustomTask<QBarrier>에 대한 타입 별칭입니다.
[alias] QNetworkReplyWrapperTask
레시피 내에서 사용할 QCustomTask<QNetworkReplyWrapper>에 대한 타입 별칭입니다.
[alias] QProcessTask
레시피 내에서 사용할 수 있도록 QProcessTaskDeleter 를 사용하여 QCustomTask<QProcess>에 대한 타입 별칭을 정의합니다.
[alias] QStoredBarrier
레시피 내에서 사용할 QtTaskTree::Storage<QStartedBarrier>에 대한 타입 별칭입니다.
[alias] QTaskTreeTask
레시피 내에서 사용할 QCustomTask<QTaskTree>에 대한 타입 별칭입니다.
[alias] QTcpSocketWrapperTask
레시피 내에서 사용할 QCustomTask<QTcpSocketWrapper>에 대한 타입 별칭입니다.
[alias] template <typename ResultType> QThreadFunctionTask
레시피 내에서 사용하기 위한, QCustomTask<QThreadFunction<ResultType>>에 대한 타입 별칭으로, 여기서 ResultType 은 스레드 함수의 반환 타입을 지정합니다.
[alias] QTimeoutTask
레시피 내에서 사용하기 위한 ` QCustomTask` <std::chrono::milliseconds> 의 타입 별칭입니다. ` std::chrono::milliseconds `는 타임아웃 기간을 설정하는 데 사용됩니다. 기본 타임아웃은 ` std::chrono::milliseconds::zero()`이며, 즉 `QTimeoutTask`는 제어권이 실행 중인 이벤트 루프로 돌아오자마자 종료됩니다.
사용 예:
using namespace std::chrono;
using namespace std::chrono_literals;
const auto onSetup = [](milliseconds &timeout) { timeout = 1000ms; }
const auto onDone = [] { qDebug() << "Timed out."; }
const Group root {
QTimeoutTask(onSetup, onDone)
};timeoutTask()도 참조하십시오 .
enum class QtTaskTree::SetupResult
이 열거형은 그룹이나 태스크의 설정 핸들러 함수에서 선택적으로 반환됩니다. 이는 설정 핸들러의 실행이 완료된 후 실행 중인 태스크 트리가 어떻게 진행해야 하는지를 지시합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QtTaskTree::SetupResult::Continue | 0 | 기본값. 그룹 또는 태스크의 실행이 정상적으로 계속됩니다. 그룹 또는 태스크의 설정 핸들러가 void를 반환하면 Continue를 반환한 것으로 간주됩니다. |
QtTaskTree::SetupResult::StopWithSuccess | 1 | 성공 시 그룹 또는 태스크의 실행이 즉시 중지됩니다. 그룹의 설정 핸들러에서 이 값이 반환되면 모든 자식 태스크가 건너뛰어지고, 그룹의 ` onGroupDone()` 핸들러가 ` DoneWith::Success`로 호출됩니다. 그룹은 상위 그룹에 성공을 보고합니다. 그룹의 워크플로 정책은 무시됩니다. 태스크의 설정 핸들러에서 반환된 경우, 태스크는 시작되지 않고 완료 핸들러도 호출되지 않으며, 태스크는 상위 요소에 성공을 보고합니다. |
QtTaskTree::SetupResult::StopWithError | 2 | 그룹 또는 태스크의 실행이 오류와 함께 즉시 중지됩니다. 그룹의 설정 핸들러에서 반환되면 모든 하위 태스크가 건너뛰어지고, 그룹의 onGroupDone() 핸들러가 DoneWith::Error 로 호출됩니다. 그룹은 상위 그룹에 오류를 보고합니다. 그룹의 워크플로 정책은 무시됩니다. 태스크의 설정 핸들러에서 반환되면, 태스크는 시작되지 않고 오류 핸들러도 호출되지 않으며, 태스크는 상위 요소에 오류를 보고합니다. |
[alias] QtTaskTree::TreeDoneHandler
std::function<void(const QTaskTree &, QtTaskTree::DoneWith)>에 대한 타입 별칭입니다.
TreeDoneHandler 는 태스크 트리 실행을 스케줄링하는 태스크 트리 러너 함수의 선택적 인자입니다. 이 함수는 태스크 트리 러너의 레시피가 실행을 완료했을 때 호출됩니다. QTaskTree 및 레시피의 결과에 대한 접근은 전달된 인자를 통해 이루어집니다.
태스크 트리 실행기는 std::function<void(const QTaskTree &)>, std::function<void(QtTaskTree::DoneWith)> 또는 std::function<void(void)> 와 같은 축약된 형식의 핸들러도 허용합니다.
[alias] QtTaskTree::TreeSetupHandler
std::function<void(QTaskTree &)>에 대한 타입 별칭입니다.
TreeSetupHandler 는 태스크 트리 실행을 스케줄링하는 태스크 트리 러너 함수의 선택적 인자입니다. 이 함수는 태스크 트리 러너가 레시피를 실행하려 할 때 호출됩니다. QTaskTree 에 대한 액세스는 전달된 인자를 통해 이루어집니다.
태스크 트리 실행기는 std::function<void(void)> 의 축약형인 핸들러도 허용합니다.
enum class QtTaskTree::WorkflowPolicy
이 열거형은 어떤 그룹의 자식 작업이 실행을 완료했을 때 Group 요소가 보일 수 있는 동작을 설명합니다. 또한 실행 중인 Group이 취소될 때도 사용됩니다.
| 상수 | 값 | 설명 |
|---|---|---|
QtTaskTree::WorkflowPolicy::StopOnError | 0 | 기본값. stopOnError 전역 요소와 일치합니다. 자식 태스크 중 하나라도 오류로 종료되면 그룹이 중지되고 오류로 종료됩니다. 모든 자식 태스크가 성공적으로 완료되면 그룹은 성공적으로 종료됩니다. 그룹이 비어 있는 경우, 그룹은 성공적으로 종료됩니다. |
QtTaskTree::WorkflowPolicy::ContinueOnError | 1 | continueOnError 전역 요소에 해당합니다. stopOnError 과 유사하지만, 자식 작업 중 하나라도 오류로 종료된 경우 모든 작업이 완료될 때까지 실행이 계속되며, 그룹 내의 다른 작업이 성공적으로 완료되었더라도 그룹은 이후에 오류를 보고합니다. 모든 자식 작업이 성공적으로 완료되면 그룹도 성공적으로 완료됩니다. 그룹이 비어 있는 경우, 그룹은 성공적으로 완료됩니다. |
QtTaskTree::WorkflowPolicy::StopOnSuccess | 2 | stopOnSuccess 전역 요소에 해당합니다. 자식 작업 중 하나라도 성공으로 완료되면 그룹이 중지되고 성공으로 완료됩니다. 모든 자식 작업이 오류로 완료되면 그룹은 오류로 완료됩니다. 그룹이 비어 있으면 오류로 완료됩니다. |
QtTaskTree::WorkflowPolicy::ContinueOnSuccess | 3 | continueOnSuccess 전역 요소에 해당합니다. stopOnSuccess 와 유사하지만, 자식 작업 중 하나라도 성공적으로 완료되면 그룹 내 다른 작업이 오류로 완료된 경우라도 모든 작업이 완료될 때까지 실행이 계속되며, 그 후 그룹은 성공을 보고합니다. 모든 자식 작업이 오류로 완료되면 그룹은 오류로 완료됩니다. 그룹이 비어 있으면 오류로 완료됩니다. |
QtTaskTree::WorkflowPolicy::StopOnSuccessOrError | 4 | stopOnSuccessOrError 전역 요소에 해당합니다. 그룹은 가능한 한 많은 작업을 시작합니다. 어떤 작업이든 완료되면 그룹이 중지되고 해당 작업의 결과를 보고합니다. 병렬 모드에서만 유용합니다. 순차 모드에서는 첫 번째 작업만 시작되며, 이 작업이 완료되면 그룹도 함께 종료되므로 나머지 작업들은 항상 건너뜁니다. 그룹이 비어 있으면 오류로 종료됩니다. |
QtTaskTree::WorkflowPolicy::FinishAllAndSuccess | 5 | finishAllAndSuccess 전역 요소에 해당합니다. 이 그룹은 모든 태스크를 실행하고 반환 결과를 무시합니다. 모든 태스크가 완료되면 그룹은 성공으로 종료됩니다. 그룹이 비어 있는 경우, 그룹은 성공으로 종료됩니다. |
QtTaskTree::WorkflowPolicy::FinishAllAndError | 6 | finishAllAndError 전역 요소에 해당합니다. 그룹은 모든 태스크를 실행하고 반환 결과를 무시합니다. 모든 태스크가 완료되면 그룹은 오류로 종료됩니다. 그룹이 비어 있으면 오류로 종료됩니다. |
자식 태스크의 결과로 인해 그룹이 중지될 때마다, 즉 StopOnError, StopOnSuccess 또는 StopOnSuccessOrError 정책이 적용된 경우, 그룹은 실행 중인 다른 자식 태스크(있는 경우 - 예를 들어 병렬 모드에서)를 취소하고, 아직 시작하지 않은 태스크(예를 들어 순차 모드에서, 실패한 태스크 뒤에 배치된 태스크)의 실행을 건너뜁니다. ParallelLimit 를 사용할 경우 자식 작업의 취소와 건너뛰기가 모두 발생할 수 있습니다.
아래 표는 다양한 워크플로 정책 간의 차이점을 요약한 것입니다:
| WorkflowPolicy | 모든 하위 작업 실행 | 결과 | 그룹이 비어 있을 때의 결과 |
|---|---|---|---|
| StopOnError | 자식 작업 중 하나라도 오류로 완료되면 중지하고 오류를 보고합니다 | 하위 작업 중 하나 이상이 실패한 경우 오류가 발생하며, 그렇지 않은 경우 성공합니다 | 성공 |
| 오류 발생 시 계속 | 예 | 자식 작업 중 하나 이상이 실패하면 오류, 그렇지 않으면 성공 | 성공 |
| 성공 시 중지 | 자식 작업 중 하나라도 성공적으로 완료되면 중지하고 성공을 보고합니다. | 자식 작업 중 하나 이상이 성공하면 성공, 그렇지 않으면 오류 | 오류 |
| 성공 시 계속 | 예 | 자식 작업 중 하나 이상이 성공하면 성공, 그렇지 않으면 오류 | 오류 |
| StopOnSuccessOrError | 자식 작업 중 하나가 완료되면 중지하고 자식 작업의 결과를 보고합니다 | 완료된 자식 작업의 결과에 따라 성공 또는 오류 | 오류 |
| FinishAllAndSuccess | 예 | 성공 | 성공 |
| 모두 완료 및 오류 | 예 | 오류 발생 | 오류 |
그룹의 자식도 그룹인 경우, 자식 그룹은 자체 워크플로 정책에 따라 작업을 실행합니다. 상위 그룹이 상위 그룹의 워크플로 정책(즉, 상위 그룹에 StopOnError, StopOnSuccess 또는 StopOnSuccessOrError 정책이 사용된 경우)에 따라 실행 중인 하위 그룹을 중지하면, 하위 그룹의 결과는 위 표의 Result 열과 하위 그룹의 워크플로 정책 행에 따라 보고됩니다.
변수 설명서
const QtTaskTree::GroupItem QtTaskTree::continueOnError
ContinueOnError 워크플로 정책을 설명하는 편리한 전역 그룹의 요소입니다.
const QtTaskTree::GroupItem QtTaskTree::continueOnSuccess
ContinueOnSuccess 워크플로 정책을 설명하는 편리한 전역 그룹의 요소입니다.
const QtTaskTree::ExecutableItem QtTaskTree::errorItem
비어 있거나 오류가 발생하거나 동기식 태스크를 포함하는 편리한 전역 실행 가능 요소입니다.
이는 if 문에서 분기가 오류로 종료됨을 나타내는 데 유용합니다:
const ExecutableItem conditionalTask = ...;
Group group {
stopOnError,
If (conditionalTask) >> Then {
...
} >> Else {
errorItem
},
nextTask
};위의 예시에서, conditionalTask 가 오류로 종료되면 Else 분기가 선택되며, 이 분기는 즉시 오류로 종료됩니다. 이로 인해 nextTask 가 건너뛰어지고( group 의 stopOnError 워크플로 정책에 따라), group 가 오류로 종료됩니다.
successItem도 참조하십시오 .
const QtTaskTree::GroupItem QtTaskTree::finishAllAndError
FinishAllAndError 워크플로 정책을 설명하는 편리한 전역 그룹의 요소입니다.
const QtTaskTree::GroupItem QtTaskTree::finishAllAndSuccess
FinishAllAndSuccess 워크플로 정책을 설명하는 편리한 전역 그룹의 요소입니다.
const QtTaskTree::GroupItem QtTaskTree::nullItem
무작위 작업을 나타내는 편리한 전역 그룹의 요소입니다.
이는 조건식에서 선택적 요소가 없음을 나타내는 데 유용합니다:
const ExecutableItem task = ...;
const std::optional<ExecutableItem> optionalTask = ...;
Group group {
task,
optionalTask ? *optionalTask : nullItem
};const QtTaskTree::ExecutionMode QtTaskTree::parallel
병렬 실행 모드를 설명하는 편리한 전역 그룹의 요소입니다.
그룹이 시작된 후, 이전 자식 태스크가 완료될 때까지 기다리지 않고 그룹의 모든 직접 자식 태스크가 시작됩니다. 이 모드에서는 모든 자식 태스크가 동시에 실행됩니다.
sequential 및 ParallelLimit도 참조하십시오 .
const QtTaskTree::ExecutionMode QtTaskTree::parallelIdealThreadCountLimit
동시에 실행되는 태스크의 수가 제한된 병렬 실행 모드를 설명하는 편리한 전역 그룹의 요소입니다. 이 제한은 호출 스레드를 제외한 이상적인 스레드 수와 같습니다.
이는 다음과 동일합니다:
parallel 및 ParallelLimit도 참조하십시오 .
const QtTaskTree::ExecutionMode QtTaskTree::sequential
순차 실행 모드를 설명하는 편리한 전역 그룹 요소입니다.
이는 Group 요소의 기본 실행 모드입니다.
Group에 실행 모드가 지정되지 않은 경우, 순차 모드로 실행됩니다. 그룹의 모든 직접 하위 작업은 연쇄적으로 시작되므로, 한 작업이 완료되면 다음 작업이 시작됩니다. 이를 통해 이전 작업의 결과를 다음 작업이 시작되기 전에 입력으로 전달할 수 있습니다. 이 모드는 이전 작업이 완료된 후에만 다음 작업이 시작되도록 보장합니다.
parallel 및 ParallelLimit도 참조하십시오 .
const QtTaskTree::GroupItem QtTaskTree::stopOnError
StopOnError 워크플로 정책을 설명하는 편리한 전역 그룹 요소입니다.
이는 Group 요소의 기본 워크플로 정책입니다.
const QtTaskTree::GroupItem QtTaskTree::stopOnSuccess
StopOnSuccess 워크플로 정책을 설명하는 편리한 전역 그룹의 요소입니다.
const QtTaskTree::GroupItem QtTaskTree::stopOnSuccessOrError
StopOnSuccessOrError 워크플로 정책을 설명하는 편리한 전역 그룹의 요소입니다.
const QtTaskTree::ExecutableItem QtTaskTree::successItem
비어 있고, 성공적이며, 동기식 태스크를 포함하는 편리한 전역 실행 가능 요소입니다.
이는 if 문에서 분기가 성공으로 끝난다는 것을 나타내는 데 유용합니다:
const ExecutableItem conditionalTask = ...;
const Group group {
stopOnSuccess,
If (conditionalTask) >> Then {
...
} >> Else {
successItem
},
nextTask
};위의 예에서, ` conditionalTask `이 오류로 종료되면 ` Else ` 분기가 선택되며, 이 분기는 즉시 성공으로 종료됩니다. 이로 인해 ` nextTask `이 건너뛰어지고( group 의 ` stopOnSuccess ` 워크플로 정책에 따라), ` group `이 성공으로 종료됩니다.
errorItem도 참조하십시오 .
함수 문서
QtTaskTree::ExecutableItem QtTaskTree::barrierAwaiterTask(const QtTaskTree::QStoredBarrier &storedBarrier)
storedBarrier 가 완료되면 함께 완료되는 어웨이터 태스크를 반환합니다.
참고: 전달된` storedBarrier `는 반환된 태스크와 형제 항목으로 동일한 레시피에 배치되거나, 어떤 조상 ` Group`에 배치되어야 합니다. 그렇지 않으면 프로그램이 중단될 수 있습니다.
template <typename Signal> QtTaskTree::ObjectSignal<std::decay_t<Signal>> QtTaskTree::makeObjectSignal(typename QtPrivate::FunctionPointer<Signal>::Object *object, Signal &&signal)
ExecutableItem::withCancel() 또는 ExecutableItem::withAccept()에 전달된 ObjectSignalGetter 함수 내에서 ObjectSignal 를 생성하는 편리한 함수입니다. object 와 해당 signal 를 전달하여 ObjectSignal 구조체의 인스턴스를 생성합니다.
ObjectSignal, ExecutableItem::withCancel() 및 ExecutableItem::withAccept()도 참조하십시오 .
template <typename Handler> QtTaskTree::GroupItem QtTaskTree::onGroupDone(Handler &&handler, QtTaskTree::CallDone callDone = CallDoneFlag::Always)
그룹의 완료 핸들러를 포함하는 그룹 요소를 생성합니다. 기본적으로, 그룹이 완료될 때마다 ` handler `가 호출됩니다. 실행이 성공, 실패 또는 취소된 경우에만 핸들러가 호출되도록 하려면 ` callDone ` 인자에 기본값이 아닌 값을 전달하십시오. 그룹의 워크플로 정책에 따라, 실행 중인 그룹이 취소될 때(예: ` stopOnError ` 요소가 사용된 경우)에도 이 핸들러가 호출될 수 있습니다.
전달된 ` handler `는 ` std::function<DoneResult(DoneWith)> ` 유형입니다. 선택적으로, ` DoneResult ` 유형의 각 반환 값이나 ` DoneWith ` 유형의 인수를 생략할 수 있습니다(즉, 반환 유형이 ` void`일 수 있습니다). 가능한 핸들러 유형에 대한 자세한 내용은 GroupItem::GroupDoneHandler 을 참조하십시오.
handler 가 호출될 때, 해당 그룹의 모든 하위 작업은 이미 완료된 상태입니다.
그룹에 Storage 요소가 포함된 경우, handler 는 스토리지가 소멸되기 전에 호출되므로, handler 가 활성 스토리지의 데이터를 마지막으로 읽을 수 있습니다.
GroupItem::GroupDoneHandler 및 onGroupSetup()도 참조하십시오 .
template <typename Handler> QtTaskTree::GroupItem QtTaskTree::onGroupSetup(Handler &&handler)
그룹 설정 핸들러를 포함하는 그룹의 요소를 생성합니다. 그룹이 시작될 때마다 ` handler `가 호출됩니다.
전달된 그룹 설정 핸들러( handler )는 ` std::function<SetupResult()> ` 또는 ` std::function<void()> ` 유형 중 하나입니다. 가능한 핸들러 유형에 대한 자세한 내용은 GroupItem::GroupSetupHandler 을 참조하십시오.
handler 가 호출될 때, 해당 그룹의 하위 작업 중 아직 실행 중인 것은 없습니다.
그룹에 Storage 요소가 포함된 경우, handler 은 스토리지들이 생성된 후에 호출되므로, handler 은 활성 스토리지에 대해 이미 일부 초기 수정 작업을 수행했을 수 있습니다.
GroupItem::GroupSetupHandler 및 onGroupDone()도 참조하십시오 .
template <typename Signal> QtTaskTree::ExecutableItem QtTaskTree::signalAwaiterTask(const typename QtPrivate::FunctionPointer<Signal>::Object *sender, Signal signal)
sender 가 signal 를 발생시킬 때 완료되는 어웨이터 태스크를 반환합니다.
참고: 전달된 sender 및 signal 에 대한연결은 반환된 태스크가 생성되거나 레시피에 배치될 때가 아니라, QTaskTree 에 의해 태스크가 시작될 때 수립됩니다. 전달된 sender 가 반환된 태스크를 포함하는 모든 실행 중인 태스크 트리보다 오래 유지되도록 해야 합니다. signal 가 태스크가 시작되기 전, 즉 연결이 설정되기 전에 발생했다면, 태스크는 시작된 후 signal 가 처음 발생할 때 완료됩니다.
QtTaskTree::ExecutableItem QtTaskTree::timeoutTask(const std::chrono::milliseconds &timeout, QtTaskTree::DoneResult result = DoneResult::Error)
timeout 의 지속 시간을 가진 QTimeoutTask 를 생성하며, 이 시간이 지나면 작업은 result 로 완료됩니다.
QTimeoutTask도 참조하십시오 .
QtTaskTree::GroupItem QtTaskTree::workflowPolicy(QtTaskTree::WorkflowPolicy policy)
지정된 policy 에 대한 그룹의 workflow policy 요소를 생성합니다.
편의상, 전역 요소를 대신 사용할 수도 있습니다.
stopOnError, continueOnError, stopOnSuccess, continueOnSuccess, stopOnSuccessOrError, finishAllAndSuccess, finishAllAndError 및 WorkflowPolicy도 참조하십시오 .
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.