QtTaskTree::QProcessTaskDeleter Class
class QtTaskTree::QProcessTaskDeleterUn eliminador personalizado para QProcess, utilizado por QProcessTask. Más...
| Cabecera: | #include <qprocesstask.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree)target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| Desde: | Qt 6.11 |
Nota: Todas las funciones de esta clase son reentrantes.
Funciones Públicas
| void | operator()(QProcess *process) const |
Miembros Públicos Estáticos
| void | syncAll() |
Descripción Detallada
QProcessTaskDeleter se utiliza para permitir la destrucción rápida de instancias QProcess en ejecución a través de QProcessTask en QTaskTree. En lugar de eliminar el QProcess en ejecución, que puede bloquear la ejecución del hilo de la persona que llama durante mucho tiempo, el QProcessTaskDeleter mueve el QProcess en ejecución a un hilo separado y trata de terminarlo de una manera más suave. Esto consiste en llamar a QProcess::terminate() con un tiempo de espera de 500 ms, y si el proceso sigue en ejecución una vez pasado este tiempo de espera, se realiza la llamada adicional a QProcess::kill().
Finalmente, al salir de la aplicación, se debe llamar a QProcessTaskDeleter::syncAll() para sincronizar todos los procesos que aún estén potencialmente finalizados en hilos separados. La llamada a QProcessTaskDeleter::syncAll() se bloquea en caso de que algunos procesos todavía se estén finalizando.
Esta estrategia parece sensata, ya que al borrar el QProcess en ejecución mediante QProcessTaskDeleter no bloqueamos inmediatamente, sino que posponemos el posible (pero no seguro) bloqueo hasta el final de una aplicación.
Es utilizada por QProcessTask.
Documentación de la Función Miembro
[static] void QProcessTaskDeleter::syncAll()
Este método debe llamarse al salir de la aplicación para sincronizar la finalización de todas las instancias de QProcess aún en posible ejecución que se hayan eliminado antes de utilizar QProcessTaskDeleter. La llamada debe ejecutarse desde el hilo principal.
void QProcessTaskDeleter::operator()(QProcess *process) const
Elimina el process pasado de la forma más segura. Si el process pasado no se está ejecutando, se elimina directamente. En caso contrario, mueve el process a un hilo separado e intenta terminarlo de la forma más segura llamando a QProcess::terminate() con un tiempo de espera de 500 ms, y si el proceso sigue en ejecución una vez pasado este tiempo de espera, se realiza la llamada adicional a 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.