Russian Qt Forum

Qt => Общие вопросы => Тема начата: AlekSi от Сентябрь 15, 2007, 19:51



Название: [4.3.1, Linux] Треды
Отправлено: AlekSi от Сентябрь 15, 2007, 19:51
Доброго времени суток!

Скурил уже все мануалы, но так и не разобрался...

Есть такой простейший код:
MyThread.h
Код:
#include <QThread>

class MyThread : public QThread
{
    Q_OBJECT
public:
    MyThread(int id):m_id(id){}
    void run();
private:
    int m_id;
};

MyThread.cpp
Код:
#include <MyThread.h>

void MyThread::run()
{
    qDebug("thread %d started\n",m_id);
    for(int i=0;i<3;++i)
    {
        qDebug("%d) %d\n",m_id,i);
        sleep(1);
    }
    qDebug("thread %d stoped\n",m_id);
}

main.cpp
Код:
#include <QCoreApplication>
#include <MyThread.h>

int main(int argc, char* argv[])
{
    QCoreApplication app(argc,argv);

    MyThread t1(1);
    MyThread t2(2);

    t1.run();
    t2.run();

    t2.wait();
    t1.wait();

    return 0;
}

Файл проекта стандартный (qmake -project).

Вывод вот такой:
Код:
thread 1 started
1) 0
1) 1
1) 2
thread 1 stoped
thread 2 started
2) 0
2) 1
2) 2
thread 2 stoped
Т,е, потоков-то и нет... Что я делаю не так? Или я умудрился собрать Qt4 без потоков (что вроде бы невозможно) ?


Название: Re: [4.3.1, Linux] Треды
Отправлено: AlekSi от Сентябрь 15, 2007, 20:57
В винде то же самое.
Нашёл почти такой же код в доках к Qt3. В 4-ой версии всё так сильно поменялось?


Название: Re: [4.3.1, Linux] Треды
Отправлено: Racheengel от Сентябрь 15, 2007, 23:41
попробуй start вместо run


Название: Re: [4.3.1, Linux] Треды
Отправлено: AlekSi от Сентябрь 16, 2007, 00:03
я балбес :-[
Racheengel, спасибо.