![]() |
Qt 6.x
The Qt SDK
|
\inmodule QtCore More...
#include <qrunnable.h>
Public Types | |
template<typename Callable > | |
using | if_callable = std::enable_if_t< std::is_invocable_r_v< void, Callable >, bool > |
Public Member Functions | |
virtual void | run ()=0 |
Implement this pure virtual function in your subclass. | |
constexpr | QRunnable () noexcept=default |
Constructs a QRunnable. | |
virtual | ~QRunnable () |
QRunnable virtual destructor. | |
bool | autoDelete () const |
Returns true is auto-deletion is enabled; false otherwise. | |
void | setAutoDelete (bool autoDelete) |
Enables auto-deletion if autoDelete is true; otherwise auto-deletion is disabled. | |
template<typename Callable , if_callable< Callable > = true> | |
QGenericRunnable (Callable &&c) | |
~QGenericRunnable () override | |
void | run () override |
Static Public Member Functions | |
template<typename Callable , if_callable< Callable > = true> | |
static QRunnable * | create (Callable &&functionToRun) |
static QRunnable * | create (std::nullptr_t)=delete |
\inmodule QtCore
The QRunnable class is the base class for all runnable objects.
The QRunnable class is an interface for representing a task or piece of code that needs to be executed, represented by your reimplementation of the run() function.
You can use QThreadPool to execute your code in a separate thread. QThreadPool deletes the QRunnable automatically if autoDelete() returns true
(the default). Use setAutoDelete() to change the auto-deletion flag.
QThreadPool supports executing the same QRunnable more than once by calling QThreadPool::tryStart(this) from within the run() function. If autoDelete is enabled the QRunnable will be deleted when the last thread exits the run function. Calling QThreadPool::start() multiple times with the same QRunnable when autoDelete is enabled creates a race condition and is not recommended.
Definition at line 17 of file qrunnable.h.
using QRunnable::if_callable = std::enable_if_t<std::is_invocable_r_v<void, Callable>, bool> |
Definition at line 31 of file qrunnable.h.
|
constexprdefaultnoexcept |
|
virtual |
QRunnable virtual destructor.
Definition at line 10 of file qrunnable.cpp.
|
override |
|
inline |
Returns true
is auto-deletion is enabled; false otherwise.
If auto-deletion is enabled, QThreadPool will automatically delete this runnable after calling run(); otherwise, ownership remains with the application programmer.
Definition at line 37 of file qrunnable.h.
Referenced by QThreadPoolThread::run(), and QThreadPoolPrivate::stealAndRunRunnable().
|
static |
Definition at line 114 of file qrunnable.h.
References QGenericRunnable().
Referenced by QThreadPool::start(), QThreadPool::startOnReservedThread(), and QThreadPool::tryStart().
|
staticdelete |
|
inlineexplicit |
Definition at line 90 of file qrunnable.h.
Referenced by create().
|
override |
|
pure virtual |
Implement this pure virtual function in your subclass.
Implemented in QtConcurrent::RunFunctionTaskBase< T >, QtConcurrent::RunFunctionTaskBase< InvokeResultType< Function, Args... > >, QtConcurrent::RunFunctionTaskBase< PromiseType >, QtConcurrent::ThreadEngineBase, HelloWorldTask, QtPrivate::AsyncContinuation< Function, ResultType, ParentResultType >, QDnsLookupRunnable, QHostInfoRunnable, QQmlXmlListModelQueryRunnable, QQuickShaderEffectSourceCleanup, QQuickWindowQObjectCleanupJob, QQuickShapeFillRunnable, QQuickShapeStrokeRunnable, QGeoCodeJsonParser, QGeoRouteXmlParser, and CleanupJob.
Referenced by QSGRenderThread::event(), QSGSoftwareRenderThread::event(), QSGRenderLoop::postJob(), and QThreadPoolPrivate::stealAndRunRunnable().
|
inline |
Enables auto-deletion if autoDelete is true; otherwise auto-deletion is disabled.
If auto-deletion is enabled, QThreadPool will automatically delete this runnable after calling run(); otherwise, ownership remains with the application programmer.
Note that this flag must be set before calling QThreadPool::start(). Calling this function after QThreadPool::start() results in undefined behavior.
Definition at line 38 of file qrunnable.h.
Referenced by QHostInfoRunnable::QHostInfoRunnable(), QQmlXmlListModelQueryRunnable::QQmlXmlListModelQueryRunnable(), QtConcurrent::ThreadEngineBase::ThreadEngineBase(), and QQuickShapeGenericRenderer::endSync().