zoukankan      html  css  js  c++  java
  • QThread的源码(直接搜索"thread.cpp"即可,或者在github里搜)

    void QThread::run()
    {
        (void) exec();
    }
    
    int QThread::exec()
    {
        Q_D(QThread);
        QMutexLocker locker(&d->mutex);
        d->data->quitNow = false;
        if (d->exited) {
            d->exited = false;
            return d->returnCode;
        }
        locker.unlock();
    
        QEventLoop eventLoop;
        int returnCode = eventLoop.exec();
    
        locker.relock();
        d->exited = false;
        d->returnCode = -1;
        return returnCode;
    }
    
    void QThread::exit(int returnCode)
    {
        Q_D(QThread);
        QMutexLocker locker(&d->mutex);
        d->exited = true;
        d->returnCode = returnCode;
        d->data->quitNow = true;
        for (int i = 0; i < d->data->eventLoops.size(); ++i) {
            QEventLoop *eventLoop = d->data->eventLoops.at(i);
            eventLoop->exit(returnCode);
        }
    }
    
    /*!
        Tells the thread's event loop to exit with return code 0 (success).
        Equivalent to calling QThread::exit(0).
    
        This function does nothing if the thread does not have an event
        loop.
    
        sa exit(), QEventLoop
    */
    void QThread::quit()
    { exit(); }

    https://github.com/openwebos/qt/blob/master/src/corelib/thread/qthread.cpp

  • 相关阅读:
    活动识别API服务开发
    定位服务API案例
    高精地图定位
    HiCar SDK概述
    HiCar人-车-家全场景智慧互联
    AIoT开放平台及应用
    AI+IoT+电池应用
    智能物联网(AIoT,2020年)(下)
    第一课
    分销
  • 原文地址:https://www.cnblogs.com/findumars/p/6294810.html
Copyright © 2011-2022 走看看