2011-03-15 9 views

Respuesta

11

QRunnable encapsula una tarea que desea realizar en un hilo separado. Si necesita saber qué hilo está ejecutando esa tarea o compartirla entre hilos, entonces probablemente esté haciendo algo más complicado de lo que QThreadPool está diseñado para potenciar. En ese caso, crearía un comportamiento personalizado usando QThread directamente. "Iniciar" un QRunnable con un QThreadPool es análogo a poner en cola esa tarea para un hilo disponible en el conjunto. Mientras que, iniciar un QThread en realidad asigna un nuevo hilo del sistema operativo y lo ejecuta.

El grupo de subprocesos administrará un número finito de subprocesos con una cola de trabajo de instancias de QRunnable. A medida que un hilo esté disponible, se le asignará un QRunnable para procesar. No necesita crear explícitamente ninguna instancia de QThread si está utilizando QThreadPool con QRunnable. Tenga en cuenta que aún debe asegurarse de que los recursos compartidos estén sincronizados (por ejemplo, con QMutex, QMutexLocker, QReadWriteLock, QSemaphore y/o QWaitCondition) cuando se utilizan en instancias de QRunnable.