En esta página

QFutureSynchronizer Class

template <typename T> class QFutureSynchronizer

La clase QFutureSynchronizer es una clase de conveniencia que simplifica la sincronización QFuture. Más...

Cabecera: #include <QFutureSynchronizer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Funciones Públicas

QFutureSynchronizer()
QFutureSynchronizer(QFuture<T> future)
~QFutureSynchronizer()
void addFuture(QFuture<T> future)
bool cancelOnWait() const
void clearFutures()
QList<QFuture<T>> futures() const
void setCancelOnWait(bool enabled)
void setFuture(QFuture<T> future)
void waitForFinished()

Descripción Detallada

QFutureSynchronizer es una clase plantilla que simplifica la sincronización de uno o más objetos QFuture. Los futuros se añaden utilizando las funciones addFuture() o setFuture(). La función futures() devuelve una lista de futuros. Utilice clearFutures() para eliminar todos los futuros del QFutureSynchronizer.

La función waitForFinished() espera a que finalicen todos los futuros. El destructor de QFutureSynchronizer llama a waitForFinished(), proporcionando una manera fácil de asegurarse de que todos los futuros han terminado antes de volver de una función:

void someFunction()
{
    QFutureSynchronizer<void> synchronizer;

    //...

    synchronizer.addFuture(QtConcurrent::run(anotherFunction));
    synchronizer.addFuture(QtConcurrent::map(list, mapFunction));

    return; // QFutureSynchronizer waits for all futures to finish
}

El comportamiento de waitForFinished() puede ser cambiado usando la función setCancelOnWait(). Llamar a setCancelOnWait(true) hará que waitForFinished() cancele todos los futuros antes de esperar a que terminen. Puede consultar el estado de la función de cancelación en espera utilizando la función cancelOnWait().

Véase también QFuture, QFutureWatcher y Qt Concurrent.

Documentación de las funciones miembro

QFutureSynchronizer::QFutureSynchronizer()

Construye un QFutureSynchronizer.

[explicit] QFutureSynchronizer::QFutureSynchronizer(QFuture<T> future)

Construye un QFutureSynchronizer y comienza a observar future llamando a addFuture().

Ver también addFuture().

QFutureSynchronizer::~QFutureSynchronizer()

Llama a la función waitForFinished() para asegurarse de que todos los futuros han terminado antes de destruir este QFutureSynchronizer.

Véase también waitForFinished().

void QFutureSynchronizer::addFuture(QFuture<T> future)

Añade future a la lista de futuros gestionados.

Véase también futures().

bool QFutureSynchronizer::cancelOnWait() const

Devuelve true si la función cancelar-en-espera está habilitada; en caso contrario devuelve false. Si la función cancelar-en-espera está habilitada, la función waitForFinished() cancelará todos los futuros antes de esperar a que terminen.

Véase también setCancelOnWait() y waitForFinished().

void QFutureSynchronizer::clearFutures()

Elimina todos los futuros gestionados de este QFutureSynchronizer.

Véase también addFuture() y setFuture().

QList<QFuture<T>> QFutureSynchronizer::futures() const

Devuelve una lista de todos los futuros gestionados.

Véase también addFuture() y setFuture().

void QFutureSynchronizer::setCancelOnWait(bool enabled)

Activa o desactiva la función de cancelación en espera basándose en el argumento enabled. Si enabled es verdadero, la función waitForFinished() cancelará todos los futuros antes de esperar a que terminen.

Véase también cancelOnWait() y waitForFinished().

void QFutureSynchronizer::setFuture(QFuture<T> future)

Establece que future sea el único futuro gestionado por este QFutureSynchronizer. Esta es una función de conveniencia que llama a waitForFinished(), luego a clearFutures(), y finalmente pasa future a addFuture().

Ver también addFuture(), waitForFinished(), y clearFutures().

void QFutureSynchronizer::waitForFinished()

Espera a que terminen todos los futuros. Si cancelOnWait() devuelve true, se cancela cada futuro antes de esperar a que terminen.

Véase también cancelOnWait() y setCancelOnWait().

© 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.