¿Cuál es la diferencia entre crear un hilo sobrecargando el método run y crear un hilo mediante el método movetothread en Qt?
Hay muchos ejemplos de este tipo en Internet, así que no los escribiré.
Si escribes así, hay algunas cosas que necesitas saber.
Con el método de subclasificación de QThread, solo las partes internas de la función de ejecución se ejecutarán en el subproceso secundario, y el resto, como la función de ranura, etc., aún se ejecutará en el subproceso principal. hilo (suponiendo que el hilo secundario está en el hilo principal) abierto en el hilo).
Otro método es crear una subclase de QObject, crear un nuevo hilo y luego usar MoveToThread para mover el objeto de esta clase al hilo recién creado, lo que hará que todas sus funciones de ranura se ejecuten en el hilo recién abierto. .
Si ejecuta una función miembro en el proceso principal a través de (QObject).abc(), puede recibir "QObject::killTimer: los temporizadores
no se pueden detener desde otro hilo". (QObject::killTimer:Timer
no se puede detener desde otro hilo) error.
Con el segundo enfoque, parece que te encuentras con el problema de que si bloqueas un hilo secundario en una función de ranura, las otras funciones de ranura no podrán recibir señales del hilo principal
.