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
|
||||
\fn QFuture<T> QtConcurrent::run(QThreadPool *pool, Function function, ...);
|
||||
|
||||
Runs \a function in a separate thread. The thread is taken from the
|
||||
QThreadPool \a pool. Note that \a function may not run immediately; \a function
|
||||
will only be run once a thread becomes available.
|
||||
Schedules \a function on \a pool. Note that \a function may not run
|
||||
immediately; \a function will only be run once a thread becomes available.
|
||||
|
||||
\include qtconcurrentrun.cpp run-description
|
||||
*/
|
||||
|
@ -122,6 +122,12 @@
|
||||
QtFuture::makeReadyValueFuture(), QtFuture::makeReadyRangeFuture(), and
|
||||
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
|
||||
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
|
||||
computations if desired. When the asynchronous computation represented by this
|
||||
future finishes, \a function will be invoked in a separate thread taken from the
|
||||
QThreadPool \a pool.
|
||||
future finishes, \a function will be scheduled on \a pool.
|
||||
|
||||
\sa onFailed(), onCanceled()
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user