QRunnable Class | Qt Core | Qt 6.11.0
Description: The QRunnable class is the base class for all runnable objects.

- Qt 6.11
- Qt Core
- C++ Classes
- QRunnable
- Qt 6.11.0 Reference Documentation

# QRunnable Class

The QRunnable class is the base class for all runnable objects. More...

Header: | `#include <QRunnable>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Core)` `target_link_libraries(mytarget PRIVATE Qt6::Core)`
qmake: | `QT += core`

- List of all members, including inherited members

## Public Functions

| QRunnable()
virtual | ~QRunnable()
bool | autoDelete() const
virtual void | run() = 0
void | setAutoDelete(bool autoDelete)

## Static Public Members

QRunnable * | create(Callable &&callableToRun)

## Detailed Description

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.

See also QThreadPool.

## Member Function Documentation

### `[constexpr noexcept]` QRunnable::QRunnable()

Constructs a QRunnable. Auto-deletion is enabled by default.

See also autoDelete() and setAutoDelete().

### `[virtual noexcept]` QRunnable::~QRunnable()

QRunnable virtual destructor.

### bool QRunnable::autoDelete() const

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.

See also setAutoDelete() and QThreadPool.

### `[static]` template <typename Callable, QRunnable::if_callable<Callable> = true> QRunnable *QRunnable::create(Callable &&callableToRun)

Creates a QRunnable that calls callableToRun in run().

Auto-deletion is enabled by default.

Note: In Qt versions prior to 6.6, this method took copyable functions only.

#### Constraints

Participates in overload resolution only if `Callable` is a function or function object which can be called with zero arguments.

See also run() and autoDelete().

### `[pure virtual]` void QRunnable::run()

Implement this pure virtual function in your subclass.

### void QRunnable::setAutoDelete(bool autoDelete)

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.

See also autoDelete() and QThreadPool.