QFuture: mention the work-stealing algorithm in the docs
A number of users have explored the behavior and complained about it. Lets add a \note explaining this. The function in charge is QThreadPool::stealAndRunRunnable(QRunnable *), which is a private function, exclusively used by: QFutureInterfaceBase::waitForResult() QFutureInterfaceBase::waitForFinished() also update the documentation to reflect these changes accordingly. Fixes: QTBUG-112351 Pick-to: 6.6 6.5 6.2 5.15 Change-Id: I839858cb449063d8af9bef64d2f35a6816a419b0 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
parent
855c448469
commit
0235de994b
@ -259,9 +259,8 @@
|
|||||||
\since 5.4
|
\since 5.4
|
||||||
\fn QFuture<T> QtConcurrent::run(QThreadPool *pool, Function function, ...);
|
\fn QFuture<T> QtConcurrent::run(QThreadPool *pool, Function function, ...);
|
||||||
|
|
||||||
Runs \a function in a separate thread. The thread is taken from the
|
Schedules \a function on \a pool. Note that \a function may not run
|
||||||
QThreadPool \a pool. Note that \a function may not run immediately; \a function
|
immediately; \a function will only be run once a thread becomes available.
|
||||||
will only be run once a thread becomes available.
|
|
||||||
|
|
||||||
\include qtconcurrentrun.cpp run-description
|
\include qtconcurrentrun.cpp run-description
|
||||||
*/
|
*/
|
||||||
|
@ -122,6 +122,12 @@
|
|||||||
QtFuture::makeReadyValueFuture(), QtFuture::makeReadyRangeFuture(), and
|
QtFuture::makeReadyValueFuture(), QtFuture::makeReadyRangeFuture(), and
|
||||||
QtFuture::makeExceptionalFuture().
|
QtFuture::makeExceptionalFuture().
|
||||||
|
|
||||||
|
\note Some APIs (see \l {QFuture::then()} or various QtConcurrent method
|
||||||
|
overloads) allow scheduling the computation to a specific thread pool.
|
||||||
|
However, QFuture implements a work-stealing algorithm to prevent deadlocks
|
||||||
|
and optimize thread usage. As a result, computations can be executed
|
||||||
|
directly in the thread which requests the QFuture's result.
|
||||||
|
|
||||||
\note To start a computation and store results in a QFuture, use QPromise or
|
\note To start a computation and store results in a QFuture, use QPromise or
|
||||||
one of the APIs in the \l {Qt Concurrent} framework.
|
one of the APIs in the \l {Qt Concurrent} framework.
|
||||||
|
|
||||||
@ -1257,8 +1263,7 @@
|
|||||||
|
|
||||||
Attaches a continuation to this future, allowing to chain multiple asynchronous
|
Attaches a continuation to this future, allowing to chain multiple asynchronous
|
||||||
computations if desired. When the asynchronous computation represented by this
|
computations if desired. When the asynchronous computation represented by this
|
||||||
future finishes, \a function will be invoked in a separate thread taken from the
|
future finishes, \a function will be scheduled on \a pool.
|
||||||
QThreadPool \a pool.
|
|
||||||
|
|
||||||
\sa onFailed(), onCanceled()
|
\sa onFailed(), onCanceled()
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user