diff options
author | Liang Qi <liang.qi@qt.io> | 2020-02-13 09:14:09 +0100 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-02-13 18:31:40 +0100 |
commit | 6b2535ea15cdbdb2355416b604f072fc13ff36b2 (patch) | |
tree | 4bf1560bab77c8b315850c5337ba31a0ea87b5f0 /src/corelib/thread/qthreadpool.cpp | |
parent | 54c2cebabdda0280b8443c6947b6fee02445e138 (diff) | |
parent | 67491e2df5357706dbf88ddaf1f030ff095b4528 (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
examples/widgets/graphicsview/boxes/scene.h
src/corelib/Qt5CoreMacros.cmake
src/corelib/Qt6CoreMacros.cmake
src/network/ssl/qsslsocket.cpp
src/network/ssl/qsslsocket.h
src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp
src/testlib/CMakeLists.txt
src/testlib/.prev_CMakeLists.txt
tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp
Disabled building manual tests with CMake for now, because qmake
doesn't do it, and it confuses people.
Done-With: Alexandru Croitor <alexandru.croitor@qt.io>
Done-With: Volker Hilsheimer <volker.hilsheimer@qt.io>
Change-Id: I865ae347bd01f4e59f16d007b66d175a52f1f152
Diffstat (limited to 'src/corelib/thread/qthreadpool.cpp')
-rw-r--r-- | src/corelib/thread/qthreadpool.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/corelib/thread/qthreadpool.cpp b/src/corelib/thread/qthreadpool.cpp index 5f23a78c8a..d1875a69a9 100644 --- a/src/corelib/thread/qthreadpool.cpp +++ b/src/corelib/thread/qthreadpool.cpp @@ -512,6 +512,22 @@ void QThreadPool::start(QRunnable *runnable, int priority) } /*! + \overload + \since 5.15 + + Reserves a thread and uses it to run \a fun, unless this thread will + make the current thread count exceed maxThreadCount(). In that case, + \a fun is added to a run queue instead. The \a priority argument can + be used to control the run queue's order of execution. +*/ +void QThreadPool::start(std::function<void()> fun, int priority) +{ + if (!fun) + return; + start(QRunnable::create(std::move(fun)), priority); +} + +/*! Attempts to reserve a thread to run \a runnable. If no threads are available at the time of calling, then this function @@ -542,6 +558,22 @@ bool QThreadPool::tryStart(QRunnable *runnable) return d->tryStart(runnable); } +/*! + \overload + \since 5.15 + Attempts to reserve a thread to run \a fun. + + If no threads are available at the time of calling, then this function + does nothing and returns \c false. Otherwise, \a fun is run immediately + using one available thread and this function returns \c true. +*/ +bool QThreadPool::tryStart(std::function<void()> fun) +{ + if (!fun) + return false; + return tryStart(QRunnable::create(std::move(fun))); +} + /*! \property QThreadPool::expiryTimeout Threads that are unused for \a expiryTimeout milliseconds are considered |