이 페이지에서

QtTaskTree::QProcessTaskDeleter Class

class QtTaskTree::QProcessTaskDeleter

QProcessTask 에서 사용하는 QProcess 에 대한 사용자 정의 삭제기입니다. 더 보기...

헤더: #include <qprocesstask.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)
qmake: QT += tasktree
이후: Qt 6.11

참고: 이 클래스의 모든 함수는 재진입됩니다.

공용 함수

void operator()(QProcess *process) const

정적 공용 멤버

void syncAll()

상세 설명

QProcessTaskDeleter는 QTaskTree 에서 QProcessTask 을 통해 실행 중인 QProcess 인스턴스를 빠르게 소멸시키는 데 사용됩니다. 실행 중인 QProcess 을 삭제하여 호출자의 스레드 실행을 장시간 차단하는 대신 실행 중인 QProcess 을 별도의 스레드로 이동하여 가장 부드러운 방법으로 완료하려고 시도합니다. 이는 500 ms 타임아웃을 설정하여 QProcess::terminate()를 호출하고, 이 타임아웃이 지난 후에도 프로세스가 계속 실행 중이면 QProcess::kill()를 추가로 호출하는 것으로 구성됩니다.

마지막으로 애플리케이션 종료 시에는 QProcessTaskDeleter::syncAll()를 호출하여 별도의 스레드에서 아직 잠재적으로 마무리 중인 모든 프로세스를 동기화해야 합니다. 일부 프로세스가 아직 마무리 중일 경우 QProcessTaskDeleter::syncAll() 호출이 차단됩니다.

이 전략은 실행 중인 QProcess 을 QProcessTaskDeleter를 통해 삭제할 때 즉시 차단하지 않고 애플리케이션이 끝날 때까지 가능한(확실하지는 않지만) 차단을 연기하기 때문에 합리적입니다.

QProcessTask 에서 사용합니다.

멤버 함수 문서

[static] void QProcessTaskDeleter::syncAll()

이 메서드는 애플리케이션 종료 시 호출하여 QProcessTaskDeleter 을 사용하기 전에 삭제된 아직 실행 중인 모든 QProcess 인스턴스의 최종화를 동기화해야 합니다. 이 호출은 메인 스레드에서 실행되어야 합니다.

void QProcessTaskDeleter::operator()(QProcess *process) const

전달된 process 을 가장 안전한 방법으로 삭제합니다. 전달된 process 이 실행 중이 아니라면 바로 삭제합니다. 그렇지 않으면 process 을 별도의 스레드로 이동하고 QProcess::terminate()을 호출하여 가장 안전한 방법으로 완료하려고 시도하며 500 ms 타임아웃이 지나도 프로세스가 여전히 실행 중이면 QProcess::kill()을 추가로 호출합니다.

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