Qt中的多线程技术详解

Qt中的多线程技术

Qt提供了许多用于处理线程的类和函数。 以下是Qt程序员可以用来实现多线程应用程序的四种不同方法。


QThread:带有可选事件循环的低级API

QThread是Qt中所有线程控制的基础。 每个QThread实例表示并控制一个线程。
QThread可以直接实例化或派生子类。 实例化QThread提供了一个并行事件循环,允许在辅助线程中触发QObjectslots。 继承QThread则允许应用程序在启动其事件循环之前初始化新线程,或者在没有事件循环的情况下运行并行代码。

示例:

//TestThread.h
 class TestThread : public QThread
 {
     Q_OBJECT
 private:
     void run();
 };
//TestThread.cpp
 void TestThread::run()
 {
      qDebug() << "这是在一个新的线程里: " << thread()->currentThreadId();
 }
 //main.cpp
int main(int argc, char *argv[])
 {
     QCoreApplication app(argc, argv);
     TestThread thread;
     thread.start();
     qDebug() << "这是在GUI主线程里:" << app.thread()->currentThreadId();
     thread.wait();  // 在thread运行后才可以停止。
     return 0;
 }

QThreadPool和QRunnable:重用线程

经常创建和销毁线程可能非常的耗费资源。 为了减少这种开销,可以重用现有的线程来执行新的任务。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值