Resumen de la teoría Qt Literacy-QFuture

Resumen de la teoría del futuro

I. Descripción general

QFuture representa el resultado del cálculo asincrónico en Qt. Para iniciar los cálculos, utilice una de las API del marco Qt Concurrent.

QFuture permite que los subprocesos se sincronicen en función de uno o más resultados que estarán listos en un momento posterior. El resultado puede ser cualquier tipo con un constructor predeterminado y un constructor de copia. Si el resultado no está disponible cuando se llama a la función result(), resultAt() o results(), QFuture esperará hasta que el resultado esté disponible.

Podemos usar la función isResultReadyAt() para determinar si el resultado está listo. Para los objetos QFuture que informan múltiples resultados, la función resultCount() devuelve el número de resultados consecutivos. Esto significa que siempre es seguro iterar sobre los resultados desde 0 hasta resultCount().

QFuture proporciona un iterador de estilo java (QFutureIterator) y un iterador de estilo stl (QFuture::const_iterator). Usar estos iteradores es otra forma de acceder a los resultados en el futuro.

2. Obtenga el estado QFuture

QFuture también proporciona métodos para interactuar con cálculos en ejecución. Por ejemplo, los cálculos se pueden cancelar usando la función cancelar(). Para pausar los cálculos, puede utilizar la función setPaused() o una de las funciones de conveniencia pausa(), resume() o togglePaused().

Tenga en cuenta que no todos los cálculos asincrónicos en ejecución se pueden cancelar o pausar. Por ejemplo, el futuro devuelto por QtConcurrent::run() no se puede cancelar; pero el futuro devuelto por QtConcurrent::mappedReduced() sí.

La información de progreso la proporcionan las funciones ProgressValue(), ProgressMinimum(), ProgressMaximum() y ProgressText(). La función waitForFinished() hace que el hilo de llamada se bloquee y espere a que se complete el cálculo, asegurando que todos los resultados estén disponibles.

El estado del cálculo representado por QFuture se puede consultar utilizando la función isCanceled(), isStarted(), isFinished(), isRunning() o isPaused().

QFuture es una clase ligera contada por referencias que se puede pasar por valor.

Se especifica que QFuture no contiene ninguna función de obtención de resultados. Cualquier QFuture se puede asignar o copiar a un QFuture. Esto es útil si solo se necesita información de estado o progreso, no datos de resultados reales.

Si desea utilizar señales y ranuras para interactuar con una tarea en ejecución, utilice QFutureWatcher.

Supongo que te gusta

Origin blog.csdn.net/qq_43680827/article/details/133957445
Recomendado
Clasificación