Qt 多线程整理,聊下在不同的场景下选择合适的多线程

一,Qt实现多线程的几种方式:

        1.QThread继承run()方式。

        2.QThread使用消息队列的方式。

        3.QThread moveToThread的方式。

        4.QtConcurrent::run(std::function<void ()> functionToRun) 拉姆达的方式。

        5.QThreadPool::globalInstance()->start(std::function<void ()> functionToRun)的方式。

二,不同场景下的抉择:

        个人认为线程执行的时间长短,重复次数以及任务的复杂度决定我们选择的线程方式。

       1. 如果是简单的执行,或者说代码量小的选择方式4:

void testConCurrent()
{
    qDebug() << "main thread id: " << QThread::currentThreadId();

    int var = 1;
    QtConcurrent::run([&var](){
        qDebug() << "work thread id: " << QThread::currentThreadId();
        while(var < 100) {
            QThread::sleep(1);
            var ++;
        }
    });

    while(var < 100) {
        qDebug() << "var: " << var;
        QThread::sleep(1);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cs821984831

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值