一个线程具有多个工作进程?

时间:2020-04-13 17:54:01

标签: multithreading qt

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

// WORKER.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); 
}

// CONTROLLER.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的信号中接收数据。这些信号将在程序的整个生命周期中不断收到。收到给定信号后,将对其进行处理,并将处理结果发射到存储结果槽中。

这段代码会达到我期望的效果还是我忽略的东西?

非常感谢

0 个答案:

没有答案
相关问题