Один поток с несколькими рабочими процессами? - PullRequest
0 голосов
/ 13 апреля 2020

Мне интересно, какова процедура, чтобы иметь один поток и принадлежать этому потоку один рабочий, который имеет несколько процессов. Если это не имеет особого смысла, надеюсь, приведенный ниже код должен объяснить:

// 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; 
}

// КОНТРОЛЛЕР. 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. эти сигналы будут постоянно приниматься в течение всей жизни программы. Как только данный сигнал получен, он должен быть обработан, и результат обработки будет передан в слот результата хранения.

Достигнет ли этот код того, чего я ожидаю, или я что-то пропускаю?

Большое спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...