summaryrefslogtreecommitdiffstats
path: root/src/corelib/thread/qthreadpool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/thread/qthreadpool.cpp')
-rw-r--r--src/corelib/thread/qthreadpool.cpp32
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