이 페이지에서

QtTaskTree::When Class

class QtTaskTree::When

배리어 전진 시까지 본문의 실행을 지연시키는 요소. 더 보기...

헤더: #include <qbarriertask.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)
qmake: QT += tasktree
다음부터: Qt 6.11부터
상태: 기술 미리보기

이 클래스는 기술 미리보기로 제공되며 변경될 수 있습니다.

참고: 이 클래스의 모든 함수는 재입력 가능합니다.

공개 함수

When(const QtTaskTree::BarrierKickerGetter &kicker, QtTaskTree::WorkflowPolicy policy = WorkflowPolicy::StopOnError)
When(const QtTaskTree::QCustomTask<Task, Adapter, Deleter> &customTask, Signal signal, QtTaskTree::WorkflowPolicy policy = QtTaskTree::WorkflowPolicy::StopOnError)
When(QtTaskTree::When &&other)

상세 설명

Do 본문의 실행을 관련 QStoredBarrier 가 진행되거나 QCustomTask 의 신호가 발산될 때까지 지연시키는 데 사용됩니다. 다음과 같이 Do 요소와 함께 사용됩니다: When () >> Do {}.

Do도 참조하십시오 .

멤버 함수 문서

[explicit] When::When(const QtTaskTree::BarrierKickerGetter &kicker, QtTaskTree::WorkflowPolicy policy = WorkflowPolicy::StopOnError)

kicker 를 받아 ExecutableItem 를 반환하는 지연 요소를 생성하여, Do 본체와 병렬로 실행되도록 합니다. Do 본체는 kicker 에 전달된 QStoredBarrier 가 진행될 때까지 지연됩니다. kicker 에서 반환된 ExecutableItem 와 Do 본체는 policy 를 사용하여 병렬로 실행됩니다.

예를 들어, QProcess 가 시작될 때까지 후속 작업의 실행을 지연시키고 싶다면 레시피는 다음과 같이 작성할 수 있습니다:

const auto kicker = [](const QStoredBarrier &barrier) {
    const auto onSetup = [barrier](QProcess &process) {
        QObject::connect(&process, &QProcess::started, barrier.activeStorage(), &QBarrier::advance);
        ... // Setup process program, arguments, environment, etc...
    };
    return QProcessTask(onSetup);
};

const Group recipe {
    When (kicker) >> Do {
        delayedTask1,
        ...
    }
};

위의 레시피가 실행되면, QTaskTree 는 QProcessTask 를 Do 본체와 병렬로 실행합니다. Do 본체는 처음에는 보류 상태이며, 키커에 전달된 배리어가 진행되면 계속 실행됩니다. 이는 QProcess 가 시작되는 즉시 발생합니다. 그 이후부터는 QProcess 가 Do 본체와 병렬로 실행됩니다.

Do도 참조하십시오 .

[explicit] template < typename Task, typename Adapter, typename Deleter, typename Signal > When::When(const QtTaskTree::QCustomTask<Task, Adapter, Deleter> &customTask, Signal signal, QtTaskTree::WorkflowPolicy policy = QtTaskTree::WorkflowPolicy::StopOnError)

지연 요소를 생성하며, ` customTask `와 그 ` Task`의 ` signal `를 ` Do ` 본문과 병렬로 실행하도록 합니다. ` Do ` 본문은 ` Task`의 ` signal `가 출력될 때까지 지연됩니다. ` customTask `와 ` Do ` 본문은 ` policy`를 사용하여 병렬로 실행됩니다.

다른 When의 생성자 코드는 다음과 같이 단순화할 수 있습니다.

const auto onSetup = [barrier](QProcess &process) {
    ... // Setup process program, arguments, environment, etc...
};

const Group recipe {
    When (QProcessTask(onSetup), &QProcess::started) >> Do {
        delayedTask1,
        ...
    }
};

참고: 전달된 ` customTask `의` Task `타입은 ` QObject`에서 파생되어야 합니다.

Do도 참조하십시오 .

[constexpr noexcept default] When::When(QtTaskTree::When &&other)

When 의 인스턴스를 move-construct로 생성합니다.

© 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.