From 7d21abfca39d2dcf98e3a81b1b7d8c73bd274cd1 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 27 Aug 2012 23:22:15 +0200 Subject: Move QFutureSynchronizer back to QtCore This class, too, belongs with QFuture. Change-Id: I41a532ca66c156f1631e4b22ffc1a5879c854488 Reviewed-by: Thiago Macieira --- src/concurrent/concurrent.pro | 2 - .../code/src_concurrent_qfuturesynchronizer.cpp | 53 ------- src/concurrent/qfuturesynchronizer.cpp | 156 --------------------- src/concurrent/qfuturesynchronizer.h | 122 ---------------- .../src_corelib_thread_qfuturesynchronizer.cpp | 53 +++++++ src/corelib/thread/qfuturesynchronizer.h | 120 ++++++++++++++++ src/corelib/thread/qfuturesynchronizer.qdoc | 156 +++++++++++++++++++++ src/corelib/thread/thread.pri | 1 + 8 files changed, 330 insertions(+), 333 deletions(-) delete mode 100644 src/concurrent/doc/snippets/code/src_concurrent_qfuturesynchronizer.cpp delete mode 100644 src/concurrent/qfuturesynchronizer.cpp delete mode 100644 src/concurrent/qfuturesynchronizer.h create mode 100644 src/corelib/doc/snippets/code/src_corelib_thread_qfuturesynchronizer.cpp create mode 100644 src/corelib/thread/qfuturesynchronizer.h create mode 100644 src/corelib/thread/qfuturesynchronizer.qdoc (limited to 'src') diff --git a/src/concurrent/concurrent.pro b/src/concurrent/concurrent.pro index 20a9356e53..f30f75e46e 100644 --- a/src/concurrent/concurrent.pro +++ b/src/concurrent/concurrent.pro @@ -12,7 +12,6 @@ load(qt_module) PRECOMPILED_HEADER = ../corelib/global/qt_pch.h SOURCES += \ - qfuturesynchronizer.cpp \ qtconcurrentfilter.cpp \ qtconcurrentmap.cpp \ qtconcurrentthreadengine.cpp \ @@ -20,7 +19,6 @@ SOURCES += \ HEADERS += \ qtconcurrent_global.h \ - qfuturesynchronizer.h \ qtconcurrentcompilertest.h \ qtconcurrentexception.h \ qtconcurrentfilter.h \ diff --git a/src/concurrent/doc/snippets/code/src_concurrent_qfuturesynchronizer.cpp b/src/concurrent/doc/snippets/code/src_concurrent_qfuturesynchronizer.cpp deleted file mode 100644 index 7b2d3d2b81..0000000000 --- a/src/concurrent/doc/snippets/code/src_concurrent_qfuturesynchronizer.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [0] -void someFunction() -{ - QFutureSynchronizer synchronizer; - - ... - - synchronizer.addFuture(QtConcurrent::run(anotherFunction)); - synchronizer.addFuture(QtConcurrent::map(list, mapFunction)); - - return; // QFutureSynchronizer waits for all futures to finish -} -//! [0] diff --git a/src/concurrent/qfuturesynchronizer.cpp b/src/concurrent/qfuturesynchronizer.cpp deleted file mode 100644 index 69ea325f07..0000000000 --- a/src/concurrent/qfuturesynchronizer.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! \class QFutureSynchronizer - \since 4.4 - - \brief The QFutureSynchronizer class is a convenience class that simplifies - QFuture synchronization. - - \ingroup thread - - QFutureSynchronizer is a template class that simplifies synchronization of - one or more QFuture objects. Futures are added using the addFuture() or - setFuture() functions. The futures() function returns a list of futures. - Use clearFutures() to remove all futures from the QFutureSynchronizer. - - The waitForFinished() function waits for all futures to finish. - The destructor of QFutureSynchronizer calls waitForFinished(), providing - an easy way to ensure that all futures have finished before returning from - a function: - - \snippet code/src_concurrent_qfuturesynchronizer.cpp 0 - - The behavior of waitForFinished() can be changed using the - setCancelOnWait() function. Calling setCancelOnWait(true) will cause - waitForFinished() to cancel all futures before waiting for them to finish. - You can query the status of the cancel-on-wait feature using the - cancelOnWait() function. - - \sa QFuture, QFutureWatcher, {Concurrent Programming}{Qt Concurrent} -*/ - -/*! - \fn QFutureSynchronizer::QFutureSynchronizer() - - Constructs a QFutureSynchronizer. -*/ - -/*! - \fn QFutureSynchronizer::QFutureSynchronizer(const QFuture &future) - - Constructs a QFutureSynchronizer and begins watching \a future by calling - addFuture(). - - \sa addFuture() -*/ - -/*! - \fn QFutureSynchronizer::~QFutureSynchronizer() - - Calls waitForFinished() function to ensure that all futures have finished - before destroying this QFutureSynchronizer. - - \sa waitForFinished() -*/ - -/*! - \fn void QFutureSynchronizer::setFuture(const QFuture &future) - - Sets \a future to be the only future managed by this QFutureSynchronizer. - This is a convenience function that calls waitForFinished(), - then clearFutures(), and finally passes \a future to addFuture(). - - \sa addFuture(), waitForFinished(), clearFutures() -*/ - -/*! - \fn void QFutureSynchronizer::addFuture(const QFuture &future) - - Adds \a future to the list of managed futures. - - \sa futures() -*/ - -/*! - \fn void QFutureSynchronizer::waitForFinished() - - Waits for all futures to finish. If cancelOnWait() returns true, each - future is canceled before waiting for them to finish. - - \sa cancelOnWait(), setCancelOnWait() -*/ - -/*! - \fn void QFutureSynchronizer::clearFutures() - - Removes all managed futures from this QFutureSynchronizer. - - \sa addFuture(), setFuture() -*/ - -/*! - \fn QList > QFutureSynchronizer::futures() const - - Returns a list of all managed futures. - - \sa addFuture(), setFuture() -*/ - -/*! - \fn void QFutureSynchronizer::setCancelOnWait(bool enabled) - - Enables or disables the cancel-on-wait feature based on the \a enabled - argument. If \a enabled is true, the waitForFinished() function will cancel - all futures before waiting for them to finish. - - \sa waitForFinished() -*/ - -/*! - \fn bool QFutureSynchronizer::cancelOnWait() const - - Returns true if the cancel-on-wait feature is enabled; otherwise returns - false. If cancel-on-wait is enabled, the waitForFinished() function will - cancel all futures before waiting for them to finish. - - \sa waitForFinished() -*/ diff --git a/src/concurrent/qfuturesynchronizer.h b/src/concurrent/qfuturesynchronizer.h deleted file mode 100644 index b82e968d8f..0000000000 --- a/src/concurrent/qfuturesynchronizer.h +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QFUTURESYNCHRONIZER_H -#define QFUTURESYNCHRONIZER_H - -#include - -#include - -#ifndef QT_NO_CONCURRENT - -QT_BEGIN_HEADER -QT_BEGIN_NAMESPACE - - -template -class QFutureSynchronizer -{ - Q_DISABLE_COPY(QFutureSynchronizer) - -public: - QFutureSynchronizer() : m_cancelOnWait(false) { } - explicit QFutureSynchronizer(const QFuture &future) - : m_cancelOnWait(false) - { addFuture(future); } - ~QFutureSynchronizer() { waitForFinished(); } - - void setFuture(const QFuture &future) - { - waitForFinished(); - m_futures.clear(); - addFuture(future); - } - - void addFuture(const QFuture &future) - { - m_futures.append(future); - } - - void waitForFinished() - { - if (m_cancelOnWait) { - for (int i = 0; i < m_futures.count(); ++i) { - m_futures[i].cancel(); - } - } - - for (int i = 0; i < m_futures.count(); ++i) { - m_futures[i].waitForFinished(); - } - } - - void clearFutures() - { - m_futures.clear(); - } - - QList > futures() const - { - return m_futures; - } - - void setCancelOnWait(bool enabled) - { - m_cancelOnWait = enabled; - } - - bool cancelOnWait() const - { - return m_cancelOnWait; - } - -protected: - QList > m_futures; - bool m_cancelOnWait; -}; - -QT_END_NAMESPACE -QT_END_HEADER - -#endif // QT_NO_CONCURRENT - -#endif // QFUTURESYNCHRONIZER_H diff --git a/src/corelib/doc/snippets/code/src_corelib_thread_qfuturesynchronizer.cpp b/src/corelib/doc/snippets/code/src_corelib_thread_qfuturesynchronizer.cpp new file mode 100644 index 0000000000..7b2d3d2b81 --- /dev/null +++ b/src/corelib/doc/snippets/code/src_corelib_thread_qfuturesynchronizer.cpp @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//! [0] +void someFunction() +{ + QFutureSynchronizer synchronizer; + + ... + + synchronizer.addFuture(QtConcurrent::run(anotherFunction)); + synchronizer.addFuture(QtConcurrent::map(list, mapFunction)); + + return; // QFutureSynchronizer waits for all futures to finish +} +//! [0] diff --git a/src/corelib/thread/qfuturesynchronizer.h b/src/corelib/thread/qfuturesynchronizer.h new file mode 100644 index 0000000000..12edcfb971 --- /dev/null +++ b/src/corelib/thread/qfuturesynchronizer.h @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFUTURESYNCHRONIZER_H +#define QFUTURESYNCHRONIZER_H + +#include + +#ifndef QT_NO_QFUTURE + +QT_BEGIN_HEADER +QT_BEGIN_NAMESPACE + + +template +class QFutureSynchronizer +{ + Q_DISABLE_COPY(QFutureSynchronizer) + +public: + QFutureSynchronizer() : m_cancelOnWait(false) { } + explicit QFutureSynchronizer(const QFuture &future) + : m_cancelOnWait(false) + { addFuture(future); } + ~QFutureSynchronizer() { waitForFinished(); } + + void setFuture(const QFuture &future) + { + waitForFinished(); + m_futures.clear(); + addFuture(future); + } + + void addFuture(const QFuture &future) + { + m_futures.append(future); + } + + void waitForFinished() + { + if (m_cancelOnWait) { + for (int i = 0; i < m_futures.count(); ++i) { + m_futures[i].cancel(); + } + } + + for (int i = 0; i < m_futures.count(); ++i) { + m_futures[i].waitForFinished(); + } + } + + void clearFutures() + { + m_futures.clear(); + } + + QList > futures() const + { + return m_futures; + } + + void setCancelOnWait(bool enabled) + { + m_cancelOnWait = enabled; + } + + bool cancelOnWait() const + { + return m_cancelOnWait; + } + +protected: + QList > m_futures; + bool m_cancelOnWait; +}; + +QT_END_NAMESPACE +QT_END_HEADER + +#endif // QT_NO_QFUTURE + +#endif // QFUTURESYNCHRONIZER_H diff --git a/src/corelib/thread/qfuturesynchronizer.qdoc b/src/corelib/thread/qfuturesynchronizer.qdoc new file mode 100644 index 0000000000..903dc89d1e --- /dev/null +++ b/src/corelib/thread/qfuturesynchronizer.qdoc @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! \class QFutureSynchronizer + \since 4.4 + + \brief The QFutureSynchronizer class is a convenience class that simplifies + QFuture synchronization. + + \ingroup thread + + QFutureSynchronizer is a template class that simplifies synchronization of + one or more QFuture objects. Futures are added using the addFuture() or + setFuture() functions. The futures() function returns a list of futures. + Use clearFutures() to remove all futures from the QFutureSynchronizer. + + The waitForFinished() function waits for all futures to finish. + The destructor of QFutureSynchronizer calls waitForFinished(), providing + an easy way to ensure that all futures have finished before returning from + a function: + + \snippet code/src_corelib_thread_qfuturesynchronizer.cpp 0 + + The behavior of waitForFinished() can be changed using the + setCancelOnWait() function. Calling setCancelOnWait(true) will cause + waitForFinished() to cancel all futures before waiting for them to finish. + You can query the status of the cancel-on-wait feature using the + cancelOnWait() function. + + \sa QFuture, QFutureWatcher, {Concurrent Programming}{Qt Concurrent} +*/ + +/*! + \fn QFutureSynchronizer::QFutureSynchronizer() + + Constructs a QFutureSynchronizer. +*/ + +/*! + \fn QFutureSynchronizer::QFutureSynchronizer(const QFuture &future) + + Constructs a QFutureSynchronizer and begins watching \a future by calling + addFuture(). + + \sa addFuture() +*/ + +/*! + \fn QFutureSynchronizer::~QFutureSynchronizer() + + Calls waitForFinished() function to ensure that all futures have finished + before destroying this QFutureSynchronizer. + + \sa waitForFinished() +*/ + +/*! + \fn void QFutureSynchronizer::setFuture(const QFuture &future) + + Sets \a future to be the only future managed by this QFutureSynchronizer. + This is a convenience function that calls waitForFinished(), + then clearFutures(), and finally passes \a future to addFuture(). + + \sa addFuture(), waitForFinished(), clearFutures() +*/ + +/*! + \fn void QFutureSynchronizer::addFuture(const QFuture &future) + + Adds \a future to the list of managed futures. + + \sa futures() +*/ + +/*! + \fn void QFutureSynchronizer::waitForFinished() + + Waits for all futures to finish. If cancelOnWait() returns true, each + future is canceled before waiting for them to finish. + + \sa cancelOnWait(), setCancelOnWait() +*/ + +/*! + \fn void QFutureSynchronizer::clearFutures() + + Removes all managed futures from this QFutureSynchronizer. + + \sa addFuture(), setFuture() +*/ + +/*! + \fn QList > QFutureSynchronizer::futures() const + + Returns a list of all managed futures. + + \sa addFuture(), setFuture() +*/ + +/*! + \fn void QFutureSynchronizer::setCancelOnWait(bool enabled) + + Enables or disables the cancel-on-wait feature based on the \a enabled + argument. If \a enabled is true, the waitForFinished() function will cancel + all futures before waiting for them to finish. + + \sa waitForFinished() +*/ + +/*! + \fn bool QFutureSynchronizer::cancelOnWait() const + + Returns true if the cancel-on-wait feature is enabled; otherwise returns + false. If cancel-on-wait is enabled, the waitForFinished() function will + cancel all futures before waiting for them to finish. + + \sa waitForFinished() +*/ diff --git a/src/corelib/thread/thread.pri b/src/corelib/thread/thread.pri index 6e341beb75..7247f2984e 100644 --- a/src/corelib/thread/thread.pri +++ b/src/corelib/thread/thread.pri @@ -14,6 +14,7 @@ HEADERS += thread/qmutex.h \ thread/qresultstore.h \ thread/qfuture.h \ thread/qfutureinterface.h \ + thread/qfuturesynchronizer.h \ thread/qfuturewatcher.h \ thread/qbasicatomic.h \ thread/qgenericatomic.h \ -- cgit v1.2.3