Sur cette page

QFutureSynchronizer Class

template <typename T> class QFutureSynchronizer

La classe QFutureSynchronizer est une classe de commodité qui simplifie la synchronisation QFuture. Plus d'informations...

En-tête : #include <QFutureSynchronizer>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Fonctions publiques

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()

Description détaillée

QFutureSynchronizer est une classe modèle qui simplifie la synchronisation d'un ou plusieurs objets QFuture. Les Futures sont ajoutés à l'aide des fonctions addFuture() ou setFuture(). La fonction futures() renvoie une liste de futures. Utilisez clearFutures() pour supprimer tous les futures du QFutureSynchronizer.

La fonction waitForFinished() attend que tous les futures soient terminés. Le destructeur de QFutureSynchronizer appelle waitForFinished(), ce qui permet de s'assurer facilement que tous les futures sont terminés avant de revenir d'une fonction :

void someFunction()
{
    QFutureSynchronizer<void> synchronizer;

    //...

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

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

Le comportement de waitForFinished() peut être modifié à l'aide de la fonction setCancelOnWait(). En appelant setCancelOnWait(true), waitForFinished() annulera tous les futures avant d'attendre qu'ils se terminent. Vous pouvez demander l'état de la fonction d'annulation sur attente à l'aide de la fonction cancelOnWait().

Voir aussi QFuture, QFutureWatcher, et Qt Concurrent.

Documentation des fonctions membres

QFutureSynchronizer::QFutureSynchronizer()

Construit un QFutureSynchronizer.

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

Construit un QFutureSynchronizer et commence à regarder future en appelant addFuture().

Voir aussi addFuture().

QFutureSynchronizer::~QFutureSynchronizer()

Appelle la fonction waitForFinished() pour s'assurer que tous les futures sont terminés avant de détruire ce QFutureSynchronizer.

Voir aussi waitForFinished().

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

Ajoute future à la liste des contrats à terme gérés.

Voir également futures().

bool QFutureSynchronizer::cancelOnWait() const

Renvoie true si la fonction "cancel-on-wait" est activée ; sinon, renvoie false. Si la fonction cancel-on-wait est activée, la fonction waitForFinished() annulera tous les futures avant d'attendre qu'ils se terminent.

Voir aussi setCancelOnWait() et waitForFinished().

void QFutureSynchronizer::clearFutures()

Supprime tous les contrats à terme gérés de ce site QFutureSynchronizer.

Voir également addFuture() et setFuture().

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

Renvoie une liste de tous les contrats à terme gérés.

Voir aussi addFuture() et setFuture().

void QFutureSynchronizer::setCancelOnWait(bool enabled)

Active ou désactive la fonction d'annulation en cas d'attente en fonction de l'argument enabled. Si enabled est vrai, la fonction waitForFinished() annulera tous les futurs avant d'attendre qu'ils se terminent.

Voir aussi cancelOnWait() et waitForFinished().

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

Définit future comme étant le seul futur géré par ce QFutureSynchronizer. Il s'agit d'une fonction de commodité qui appelle waitForFinished(), puis clearFutures(), et enfin transmet future à addFuture().

Voir aussi addFuture(), waitForFinished() et clearFutures().

void QFutureSynchronizer::waitForFinished()

Attend que tous les futurs se terminent. Si cancelOnWait() renvoie true, chaque futur est annulé avant d'attendre qu'ils se terminent.

Voir aussi cancelOnWait() et 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.