QtTaskTree::QProcessTaskDeleter Class
class QtTaskTree::QProcessTaskDeleterUn suppresseur personnalisé pour QProcess, utilisé par QProcessTask. Plus...
| En-tête : | #include <qprocesstask.h> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS TaskTree)target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake : | QT += tasktree |
| Depuis : | Qt 6.11 |
Note : Toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
| void | operator()(QProcess *process) const |
Membres publics statiques
| void | syncAll() |
Description détaillée
QProcessTaskDeleter est utilisé pour permettre la destruction rapide des instances QProcess en cours d'exécution via QProcessTask dans QTaskTree. Au lieu de supprimer l'instance QProcess en cours d'exécution, ce qui peut bloquer l'exécution du thread de l'appelant pendant une longue période, QProcessTaskDeleter déplace l'instance QProcess en cours d'exécution dans un thread séparé et tente de la terminer de la manière la plus douce possible. Cela consiste à appeler QProcess::terminate() avec 500 ms timeout, et si le processus est toujours en cours d'exécution après ce timeout, l'appel supplémentaire à QProcess::kill() est effectué.
Enfin, lorsque l'application est quittée, QProcessTaskDeleter::syncAll() doit être appelé afin de synchroniser tous les processus encore potentiellement finalisés dans des threads distincts. L'appel à QProcessTaskDeleter::syncAll() est bloquant au cas où certains processus seraient encore en cours de finalisation.
Cette stratégie semble judicieuse, étant donné que lors de la suppression de QProcess via QProcessTaskDeleter, nous ne bloquons pas immédiatement, mais reportons le blocage possible (mais non certain) jusqu'à la fin de l'application.
Elle est utilisée par QProcessTask.
Documentation des fonctions membres
[static] void QProcessTaskDeleter::syncAll()
Cette méthode doit être appelée à la sortie de l'application pour synchroniser la finalisation de toutes les instances QProcess encore en cours d'exécution qui ont été supprimées avant l'utilisation de QProcessTaskDeleter. L'appel doit être exécuté à partir du fil d'exécution principal.
void QProcessTaskDeleter::operator()(QProcess *process) const
Supprime le site process passé de la manière la plus sûre qui soit. Si le process passé n'est pas en cours d'exécution, il est supprimé directement. Sinon, il déplace le process dans un thread séparé et tente de le terminer de la manière la plus sûre en appelant QProcess::terminate() avec 500 ms timeout, et si le processus est toujours en cours d'exécution après ce timeout, l'appel supplémentaire à QProcess::kill() est effectué.
© 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.