QThread类理解
来源:互联网 发布:淘宝卖家和买家都被骗 编辑:程序博客网 时间:2024/05/21 01:52
Qt中的QThread类提供了一种与平台无关的方式来管理线程。从QThread类实例化的一个对象可以管理程序中的一个线程。
Thread::QThread(QObject *parent = Q_NULLPTR)
构造一个新的QThread来管理一个新的线程。 父类拥有QThread的所有权。 线程不会开始执行,直到start()被调用。
QThread::~QThread()
销毁QThread。
QThread *QThread::currentThread() static
返回一个指向当前正在执行的线程的指针。
Qt::HANDLE QThread::currentThreadId() static
返回当前正在执行的线程的线程句柄。警告:此函数返回的句柄用于内部目的,不应在任何应用程序代码中使用。
bool QThread::event(QEvent *event) virtual
从QObject :: event()重新实现。
QAbstractEventDispatcher *QThread::eventDispatcher() const
返回指向线程的事件分派器对象的指针。 如果线程没有事件分派器,则此函数返回0。此功能在Qt 5.0中引入。
int QThread::exec() protected
进入事件循环并等待直到exit()被调用,返回传递给exit()的值。 如果exit()通过quit()调用,返回的值为0。此函数旨在从run()内调用。 有必要调用此函数来启动事件处理。
void QThread::exit(int returnCode = 0)
告诉线程的事件循环使用returnCode退出。调用此函数后,线程离开事件循环,并从调用返回到QEventLoop :: exec()。 QEventLoop :: exec()函数返回returnCode。注意,与C库函数相同的名称不同,此函数不返回调用者 - 它是停止的事件处理。QEventLoops直到QThread :: exec()被再次调用才会开始执行。 如果QThread :: exec()中的eventloop没有运行,那么下一个对QThread :: exec()的调用也将立即返回。
void QThread::finished() signal
该信号会在从相关联的线程完成执行之前发出。发出此信号时,线程的事件循环已停止运行。 除了延迟删除事件之外,线程中不会处理更多事件。 此信号可以连接到QObject :: deleteLater(),以释放该线程中的对象。注意:如果使用terminate()终止相关联的线程,则未定义从哪个线程发出此信号。注意:这是一个私有信号。 它可以用于信号连接,但不能由用户发出。
int QThread::idealThreadCount() static
返回可在系统上运行的理想线程数。 这是通过查询系统中实际和逻辑的处理器内核数量来完成的。 如果无法检测到处理器核心数,则此函数返回-1。
bool QThread::isFinished() const
如果线程完成则返回true; 否则返回false。
bool QThread::isInterruptionRequested() const
如果在此线程上运行的任务应停止,则返回true。 中断可以通过requestInterruption()请求。此功能可用于使长时间运行的任务干净中断。 不要检查或作用于此函数返回的值是安全的,但建议在长时间运行的函数中定期执行。 注意不要太频繁地调用它,以保持开销低。
bool QThread::isRunning() const
如果线程正在运行,则返回true; 否则返回false。
void QThread::msleep(unsigned long msecs) static
强制当前线程休眠msecs毫秒。
Priority QThread::priority() const
返回正在运行的线程的优先级。 如果线程未运行,则此函数返回InheritPriority。
void QThread::quit() slot
告诉线程的事件循环退出,返回码为0(成功)。 相当于调用QThread :: exit(0)。如果线程没有事件循环,此函数不执行任何操作。
void QThread::run() virtual protected
线程的起点。 调用start()后,新创建的线程调用此函数。 默认实现只需调用exec()。您可以重新实现此功能以方便高级线程管理。 从这个方法返回将结束线程的执行。
void QThread::setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)
将线程的事件分派器设置为eventDispatcher。 这是唯一可能的,只要没有为该线程安装事件分派器。 也就是说,在线程已经用start()启动之前,或者在主线程的情况下,在QCoreApplication被实例化之前。 此方法获取对象的所有权。
void QThread::setPriority(Priority priority)
此函数设置正在运行的线程的优先级。 如果线程未运行,则此函数不执行任何操作,并立即返回。 使用start()来启动具有特定优先级的线程。优先级参数可以是QThread :: Priority枚举中的任何值,但InheritPriorty除外。优先级参数的效果取决于操作系统的调度策略。 特别是,在不支持线程优先级的系统上将忽略优先级
void QThread::setStackSize(uint stackSize)
将线程的最大堆栈大小设置为stackSize。 如果stackSize大于零,则最大堆栈大小设置为stackSize字节,否则最大堆栈大小由操作系统自动确定。警告:大多数操作系统对线程堆栈大小设置最小和最大限制。 如果堆栈大小超出这些限制,线程将无法启动。
void QThread::setTerminationEnabled(bool enabled = true)
根据启用的参数启用或禁用当前线程的终止。 线程必须已由QThread启动。当启用为false时,将禁用终止。 未来调用QThread :: terminate()将立即返回而不起作用。 相反,终止被延迟,直到终止被启用。当启用为真时,将启用终止。 未来调用QThread :: terminate()将正常终止线程。 如果终止被延迟(即QThread :: terminate()被调用,终止禁用),这个函数将立即终止调用线程。 注意,在这种情况下,此函数不会返回。
void QThread::sleep(unsigned long secs) static
强制当前线程休眠数秒钟。
uint QThread::stackSize() const
返回线程的最大堆栈大小(如果使用setStackSize()设置); 否则返回零。
void QThread::start(Priority priority = InheritPriority) slot
通过调用run()开始执行线程。 操作系统将根据优先级参数调度线程。 如果线程已经运行,则此函数不执行任何操作。优先级参数的效果取决于操作系统的调度策略。 特别地,在不支持线程优先级的系统上将忽略优先级(例如在Linux上,有关详细信息,请参阅sched_setscheduler文档)。
void QThread::started() signal
当调用run()函数时,该信号在相关线程开始执行时发出。注意:这是一个私有信号。 它可以用于信号连接,但不能由用户发出。
void QThread::terminate() slot
终止线程的执行。 线程可以或可以不立即终止,这取决于操作系统的调度策略。 在terminate()之后使用QThread :: wait(),确保。当线程终止时,等待线程完成的所有线程将被唤醒。警告:此功能很危险,不建议使用。 线程可以在其代码路径中的任何点终止。 线程可以在修改数据时终止。 没有机会自己清理线程,解锁任何保持的互斥体,等等。简言之,只有绝对必要时使用此功能。可以通过调用QThread :: setTerminationEnabled()显式地启用或禁用终止。 在终止被禁用时调用此函数导致终止被延迟,直到终止被重新启用。 有关更多信息,请参阅QThread :: setTerminationEnabled()的文档。
void QThread::usleep(unsigned long usecs) static
强制当前线程休眠usecs微秒。
bool QThread::wait(unsigned long time = ULONG_MAX)
阻塞线程,直到满足以下任一条件:与此QThread对象相关联的线程已完成执行(即,当它从run()返回时)。 如果线程完成,此函数将返回true。 如果线程尚未启动,它也返回true。时间time已过。 如果时间是ULONG_MAX(默认值),那么等待永远不会超时(线程必须从run()返回)。 如果等待超时,此函数将返回false。
void QThread::yieldCurrentThread() static
如果有的话,产生当前线程到另一个可运行线程的执行。 注意,操作系统决定切换到哪个线程。
0 0
- QThread类理解
- QThread的一点理解
- 深入理解 QThread
- QThread类
- QT之深入理解QThread
- Qt的QThread一点理解
- QT之深入理解QThread
- [QT] QThread 类详解
- qt线程类---QThread
- QThread类参考
- QThread类 基本操作
- QThread类参考
- QThread
- QThread
- QThread
- QThread
- QThread
- QThread
- 二分图最大匹配算法模板
- C语言基础 break continue语句应用
- c++输出控制(360例题)
- Java设计模式之观察者模式
- 33.Search in Rotated Sorted Array
- QThread类理解
- Python基本数据类型简单介绍
- 用 BitArray 来编写埃拉托斯特尼筛法
- 技术的正宗与野路子
- static作用(C/C++)
- Photoshop cs5 基础教程 形状图层的布尔运算
- Android Studio Gradle多渠道打包(动态设定App名称,应用图标,背景图片,状态栏颜色)、配置签名文件
- [学习小笔记] hibernate的简单数据库查询
- 认识Hadoop