首页 > 解决方案 > 一个线程有多个工作进程?

问题描述

我想知道拥有一个线程并属于该线程的一个具有多个进程的工作者的过程是什么。如果这没有太大意义,希望下面的代码应该解释:

// 工人.H //

class Worker : public QObject
{
    Q_OBJECT

Public:
    Worker(QObject *parent = nullptr); 

Public Slots:
    void process1(int x); 
    void process2(int y); 
    void process3(int z); 

signals:
    void sendResult(int result); 
}

// 控制器.H //

class controller : public QObject
{
    Q_OBJECT

public:
    controller(QObject *parent = nullptr); 

signals:
    operate();

public slots:
    void storeResults(const int);

private:
    QThread myThread; 
}

// CONTROLLER.CPP // 我只给出构造函数

Controller::Controller(QObject *parent) : QObject(parent)
{
     Worker *worker = new Worker;
     worker->moveToThread(&myThread); 

     //connections
     connect(&myThread, &QThread::finished, worker, &QObject::deleteLater);

     connect(this, &Controller::operate, worker, &Worker::process1); 
     connect(this, &Controller::operate, worker, &Worker::process2); 
     connect(this, &Controller::operate, worker, &Worker::process3); 

     connect(worker, &Worker::sendResult, this, &Controller::storeResult); 

     myThread.start(); 
}

我希望在这里实现的是一个系统,其中工作类中的三个进程插槽将从 GUI 的信号接收数据。这些信号将在程序的整个生命周期中不断收到。一旦接收到给定的信号,就应该对其进行处理,并将处理的结果发送到存储结果槽中。

这段代码会达到我的预期还是我忽略了什么?

非常感谢

标签: multithreadingqt

解决方案


推荐阅读