您当前的位置: 首页 >  ar

令狐掌门

暂无认证

  • 3浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

QThread源码分析:为什么start()会自动调用run()执行线程代码

令狐掌门 发布时间:2019-08-19 21:20:13 ,浏览量:3

         很多文章教程都说Qt在启动子线程时,子线程对象调用start,start直接调用重写的run(),这样实现了多线程,为什么start()会调用run()呢,在哪里看的到,别人是如何知道的呢,看完这篇文章你将会清楚。

        我们从Qt的源码开始。

        QThread源码目录D:\Qt5.12.4\5.12.4\Src\qtbase\src\corelib, 在QtCreator中打开corelib.pro即可看到源码

                                                                  

         

           我的Qt是windows版本,那么需要看后缀是_win的代码。

           QThread::start()源码qthread_win.cpp

void QThread::start(Priority priority)
{
    Q_D(QThread);
    QMutexLocker locker(&d->mutex);

    //如果线程运行结束
    if (d->isInFinish) {
        locker.unlock();
        wait();
        locker.relock();
    }

    //如果正在运行
    if (d->running)
        return;

    //非以上状态,线程就绪,准备运行
    d->running = tru
关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0488s