Russian Qt Forum

Qt => Вопросы новичков => Тема начата: GamBitiK от Октябрь 21, 2014, 22:03



Название: Как правильно запускать несколько потоков
Отправлено: GamBitiK от Октябрь 21, 2014, 22:03
как их запустить 2шт и паралельно,отдельно коментирую каждую строчку и они запускаются а последовательных запуск,не работает
myservice.cpp
#include "myservice.h"
#include "mythread.h"
#include "metka.h"

MyService::MyService(int argc, char **argv):QtService<QCoreApplication>(argc,argv,"MyService")
{
    try{
        //Set the service information
        setServiceDescription("Служба для обработки электронных СМИ");
        setServiceFlags(QtServiceBase::CanBeSuspended);
    }
    catch(...){
        qCritical() << "Error in CONSTRUCTOR";
    }
}

MyService::~MyService()
{
    try{
        //RELEASE memory

    }
    catch(...){
        qCritical() << "Error in DESTRUCTOR";
    }
}

void MyService::start()
{
    try{
        QCoreApplication *app = application();
        qDebug() << "Service started";
        qDebug() << app->applicationFilePath();
        Thr = new MyThread;
     
      /*  Met=new Metka;

        qDebug()<<"1";
       Thr->run();
       qDebug()<<"2";
       Met->run();*/

     //    Thr->moveToThread(proc);
       //  proc->start();

    /*   QThread* thread = new QThread;
         Metka* reader = new Metka;
        reader->moveToThread(thread);
        QThread* thread1 = new QThread;
        MyThread* reade = new MyThread;
        reade->moveToThread(thread1);

        QThread *thread = new QThread();
         MyThread *tr = new MyThread;
        tr->moveToThread(thread);
        thread->start();

*/


     //   Met=new Metka;
       // Met->run();
        //MyClass.DoSomething
    }
    catch(...){
        qCritical() << "Error in START";
    }
}

void MyService::pause()
{
    try{
        qDebug() << "Service paused";
        Thr->stop();
    }
    catch(...){
        qCritical() << "Error in PAUSE";
    }
}

void MyService::resume()
{
    try{
       qDebug() << "Service resume";
       Thr->start();
    }
    catch(...){
        qCritical() << "Error in RESUME";
    }
}

void MyService::stop()
{
    try{
       qDebug() << "Service stoped";
       Thr->terminate();
       delete Thr;
    }
    catch(...){
        qCritical() << "Error in STOP";
    }
}


Название: Re: Как правильно запускать несколько потоков
Отправлено: Old от Октябрь 21, 2014, 22:06
Нитки запускаются методом start, а не run.


Название: Re: Как правильно запускать несколько поток&#
Отправлено: GamBitiK от Октябрь 21, 2014, 22:15
Код:
MyThread::MyThread()
{
    stopped = false;
    connect (&manager, SIGNAL(finished(QNetworkReply*)),this,
             SLOT(replyFinished(QNetworkReply*)));

}


void MyThread::run()
{

    Bdconnect();
    stopped = false;
    while (!stopped){



      GetUrl();


// sleep(10);

    }
}
он же вызывает run или куда то выше нужно идти,расталкуйте
заголовочник
Код:
#include <QDebug>
#include <qtservice.h>
#include "mythread.h"
#include<metka.h>
#include<QFile>

class MyService:public QtService<QCoreApplication>
{
public:
    MyService(int argc, char **argv);
    ~MyService();

    void start();


    void pause();


    void resume();


    void stop();

    MyThread *Thr;

    Metka *Met;

private:
};

#endif // MYSERVICE_H


Название: Re: Как правильно запускать несколько потоков
Отправлено: gil9red от Октябрь 21, 2014, 23:12
GamBitiK, помещайте код в тег code (кнопка с решеткой на редакторе сообщений / выпадающий список ниже кнопки форматирования "Жирный").


Название: Re: Как правильно запускать несколько потоков
Отправлено: GamBitiK от Октябрь 22, 2014, 13:06
Подскажите пожалуйста