QRunnable 类

QRunnable 类是所有可运行对象的基类。 更多...

头文件 #include <QRunnable>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

公共函数

QRunnable()
virtual~QRunnable()
boolautoDelete() const
virtual voidrun() = 0
voidsetAutoDelete(bool autoDelete)

静态公共成员

QRunnable *create(Callable &&callableToRun)

详细描述

QRunnable 类是表示需要执行的任务或代码的接口,通过实现 run() 函数来表示。

您可以使用 QThreadPool 在单独的线程中执行代码。如果 autoDelete() 返回 true(默认),则 QThreadPool 将自动删除 QRunnable。使用 setAutoDelete() 来更改自动删除标志。

QThreadPool 支持通过从 run() 函数内部调用 QThreadPool::tryStart(this) 来执行同一 QRunnable 多次。如果启用了 autoDelete,则 QRunnable 将在最后一个线程退出 run() 函数时被删除。在启用了 autoDelete 的情况下,多次使用同一 QRunnable 调用 QThreadPool::start() 会创建竞争条件,不推荐这样做。

另请参见 QThreadPool

成员函数文档

[constexpr noexcept] QRunnable::QRunnable()

构造一个 QRunnable。默认启用自动删除。

另请参见 autoDelete() 和 setAutoDelete

[virtual noexcept] QRunnable::~QRunnable()

QRunnable 虚拟析构函数。

bool QRunnable::autoDelete() const

如果启用了自动删除,则返回 true;否则返回 false。

如果启用了自动删除,QThreadPool将自动在调用run();后删除此可运行项;否则,所有权仍归应用程序程序员。

另请参阅setAutoDelete()和QThreadPool

[静态]模板<typename Callable, QRunnable::if_callable<Callable> = true> QRunnable *QRunnable::create(Callable &&callableToRun)

创建一个QRunnable,在其中调用callableToRunrun方法。

默认情况下启用了自动删除。

注意:如果Callable是一个可以无参数调用的函数或函数对象,则此函数参与重载解析。

注意:在6.6之前的Qt版本中,此方法仅接受可复制的函数。

另请参阅run() 和 autoDelete

[纯虚拟] void QRunnable::run()

在您的子类中实现此纯虚拟函数。

void QRunnable::setAutoDelete(bool autoDelete)

如果autoDelete为true,则启用自动删除;否则禁用自动删除。

如果启用了自动删除,QThreadPool将自动在调用run();后删除此可运行项;否则,所有权仍归应用程序程序员。

请注意,必须在调用QThreadPool::start()之前设置此标志。在调用QThreadPool::start()后调用此函数会导致未定义行为。

另请参阅autoDelete() 和 QThreadPool

© 2024 Qt公司。此处包含的文档贡献的版权属于其各自的所有者。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可证1.3版许可的。Qt和相应的标志是芬兰的Qt公司和其他国家的商标。所有其他商标均为各自所有者的财产。