qt中,主线程启动了一个子线程,子线程启动后怎么让主线程阻塞,直到子线程中发出某个信号给主线程,主线程才结束阻塞继续执行

在QT应用中,为了确保主线程在后台线程完成特定任务并发出信号后才继续执行,可以使用线程同步机制。在子线程启动后,主线程会被阻塞,直到接收到子线程发送的信号。通过这种方式,可以确保全局单例和初始化在后台线程完成后,再进行界面创建等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在客户端中,我们创建了后台线程,去执行一些后台操作,但有些全局单例以及初始化我们希望是在后台线程中完成的,而且主线程创建界面等动作必须在那之后执行。现在我们就来实现这个功能:

1.后台线程mainbackgroundprocess.h:

class MainBackgroundProcess : public QObject
{
    Q_OBJECT
public:
    explicit MainBackgroundProcess(QObject *parent = nullptr);
    static MainBackgroundProcess * instance();
    void init();
private:
    static MainBackgroundProcess * m_mainProcess;
}

class MainBackgroundProcessThread : public QThread
{
    Q_OBJECT
public:
    void run() override {
        QObject::connect(this, &QThread::finished, MainBackgroundProcess::instance(), &QObject::deleteLater);
        MainBackgroundProcess::instance()->init();
        emit readyToContinue(); // 发出工作完成ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值