이 페이지에서

QtTaskTree::QProcessTaskDeleter Class

class QtTaskTree::QProcessTaskDeleter

QProcess 용 사용자 정의 삭제 도구로, QProcessTask 에서 사용됩니다. 더 보기...

헤더: #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 를 삭제하는 대신, QProcessTaskDeleter는 실행 중인 QProcess 를 별도의 스레드로 이동시키고 가장 부드러운 방식으로 작업을 완료하려고 시도합니다. 이는 500 ms 타임아웃을 설정하여 QProcess::terminate()를 호출하는 것으로 구성되며, 이 타임아웃이 지난 후에도 프로세스가 여전히 실행 중이라면 QProcess::kill()를 추가로 호출합니다.

마지막으로, 애플리케이션이 종료될 때 별도의 스레드에서 아직 최종 종료 중일 수 있는 모든 프로세스를 동기화하기 위해 QProcessTaskDeleter::syncAll()를 호출해야 합니다. 일부 프로세스가 아직 최종 종료 중일 경우, QProcessTaskDeleter::syncAll() 호출은 차단됩니다.

이 전략은 타당해 보입니다. QProcessTaskDeleter를 통해 실행 중인 QProcess 를 삭제할 때 즉시 차단되지 않고, 가능성은 있으나 확실하지 않은 차단 상황을 애플리케이션 종료 시까지 미루기 때문입니다.

이 전략은 QProcessTask 에서 사용됩니다.

멤버 함수 문서

[static] void QProcessTaskDeleter::syncAll()

이 메서드는 애플리케이션 종료 시 호출하여, ` QProcessTaskDeleter`를 사용하기 전에 삭제되었으나 여전히 실행 중일 가능성이 있는 모든 ` QProcess ` 인스턴스의 최종 처리가 동기화되도록 해야 합니다. 이 호출은 메인 스레드에서 실행되어야 합니다.

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

전달된 ` process `을 가장 안전한 방식으로 삭제합니다. 전달된 ` process `이 실행 중이 아닌 경우, 직접 삭제됩니다. 그렇지 않은 경우, ` process `을 별도의 스레드로 이동시킨 후, ` 500 ms ` 시간 제한을 설정하여 ` QProcess::terminate()`를 호출함으로써 가장 안전한 방식으로 작업을 완료하려고 시도합니다. 이 시간 제한이 지난 후에도 프로세스가 여전히 실행 중이라면, ` 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.