QThread 解释
1、线程启动
void start(Priority priority = InheritPriority)
调用后会执行run()函数,但在run()函数执行前会发射信号started(),操作系统将根据优先级参数调度线程。如果线程已经在运行,那么这个函数什么也不做。优先级参数的效果取决于操作系统的调度策略。特别是那些不支持线程优先级的系统优先级将会被忽略(例如在Linux中,更多细节请参考http://linux.die.net/man/2/sched_setscheduler)。
2、线程执行
int exec()
进入事件循环并等待直到调用exit(),返回值是通过调用exit()来获得,如果调用成功则范围0。
virtual void run();
线程的起点,在调用start()之后,新创建的线程就会调用这个函数,默认实现调用exec(),大多数需要重新实现这个功能,便于管理自己的线程。该方法返回时,该线程的执行将结束。
3、线程退出
void quit()
告诉线程事件循环退出,返回0表示成功,相当于调用了QThread::exit(0)。
void exit(int returnCode = 0)
告诉线程事件循环退出。
调用这个函数后,线程离开事件循环后返回,QEventLoop::exec()返回returnCode,
按照惯例0表示成功,任何非0值表示失败。
void terminate()
终止线程,线程可能会立即被终止也可能不会,这取决于操作系统的调度策略,使用terminate()之后再使用QThread::wait()确保万无一失。
当线程被终止后,所有等待中的线程将会被唤醒。
警告:此功能比较危险,不鼓励使用。线程可以在代码执行的任何点被终止。线程可能在更新数据时被终止,从而没有机会来清理自己,解锁等等。。。总之,只有在绝对必要时使用此功能。
建议:一般情况下,都在run函数里面设置一个标识符,可以控制循环停止。然后才调用quit函数,退出线程。
4、线程等待
void msleep(unsigned long msecs)
强制当前线程睡眠msecs毫秒
void sleep(unsigned long secs)
强制当前线程睡眠secs秒
void usleep(unsigned long usecs)
强制当前线程睡眠usecs微秒
bool wait(unsigned long time = ULONG_MAX);
线程将会被阻塞,等待time毫秒。和sleep不同的是,如果线程退出,wait会返回。
5、线程状态
bool isFinished() const
线程是否结束
推荐阅读
-
桥接模式的解释和代码实现
-
网络服务器监控:Nginx 监控指标解释
-
代理模式、BigDecimal 解释
-
查看 SQL 执行计划解释
-
学习笔记和每日一题 - 输入: nums = [7,8,9,11,12] 输出:1 解释: 最小的正数 1 没有出现:最小的正数 1 没有出现。 提示
-
Yolov5 部分参数解释-export.py
-
卷积神经网络:解释残差网络(ResNets)
-
MySQL] 解释 binlog 和 redolog 两阶段提交解释 binlog 和 redolog 两阶段提交
-
相同颜色在 iOS 和 Flutter 中显示不一样?色域差异解释
-
[人工智能试卷精读 4] RAG 试卷复习 2 (Microsoft ARI 2409) P5-可解释的推理查询 L3