QT多线程(二)

建议使用该方法

B站课程:【Qt中多线程-线程池的使用-C/C++/qt】 Qt中多线程-线程池的使用-C/C++/qt_哔哩哔哩_bilibili

操作流程:

  1. 创建一个新类(MyWork),让其从QObject中派生
  2. 添加一个公共的成员函数,函数体就是我们要子线程中执行的业务逻辑
  3. 在主线程中创建一个Qthread类型对象,这就是子线程的对象
        //3.将任务对象移动到某个子线程中
        gen->moveToThread(t1);
        bubble->moveToThread(t2);
  4. 在主线程中创建工作的类对象(不要给对象指定父类)
  5. 将MyWork对象移动到创建的子线程对象中,需要调用QObject类提供的moveToThread()方法
  6. 启用子线程,调用started(),这时候线程启动了,但是移动到线程中的对象并没有工作
  7. 调用MyWork类对象的工作函数,让这个函数开始执行,这时候是在移动到的那个子线程中运行
     connect(this, &MainWindow::starting, gen, &Generate::working);  //主线程告诉子线程开始工作
        //2.启动子线程
        connect(ui->start, &QPushButton::clicked, this, [=](){
            emit starting(10000); //主线程发送信号告诉子要生成10000个随机数
            t1->start();  //生成随机数的线程
        });

    相当于把每个类要做的工作写好,分配好,需要使用的时候将他们分配进一个线程,直接调用即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值