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 ---------------- 4 files changed, 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 (limited to 'src/concurrent') 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 -- cgit v1.2.3