Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как распараллелить потоки, Пока они выполняются последовательно 
V
    Опции темы
Lindemann66
  Дата 8.9.2011, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinking...
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 2.8.2011
Где: Ульяновск

Репутация: нет
Всего: нет



Всем привет!

Есть ещё один небольшой вопрос касательно потоков QThread
Есть код
Код

#include "Classes.h"

void Event::Show(QString str) {
    qDebug() << str;
}

MainThread::MainThread() {
    m_event = new Event();
}

MainThread::~MainThread() {
    delete m_event;
    for (int i = 0; i < 3; i++) {
        delete threads[i];
    }
}

void MainThread::Run() {
    for (int i = 0; i < 3; i++) {
        ChildThread *child = new ChildThread(i + 1);
        child->setNumber(i + 1);
        child->setEvent(m_event);
        threads.push_back(child);
        child->start();
    }
}

ChildThread::ChildThread(int timer, QObject *parent) : QThread(parent) {
    startTimer(timer * 1000);
}

void ChildThread::setNumber(uint number) {
    m_number = number;
}

void ChildThread::setEvent(Event *event) {
    m_event = event;
}

void ChildThread::timerEvent(QTimerEvent *event) {
    //m_number++;
    m_event->Show(QString("Run from %1 thread (1)").arg(m_number));

    sleep(m_number * 2);

    m_event->Show(QString("Run from %1 thread(2)").arg(m_number));

    sleep(m_number * 2);

    m_event->Show(QString("Run from %1 thread(3)").arg(m_number));

    sleep(m_number * 2);

    m_event->Show(QString("Run from %1 thread(4)").arg(m_number));
}


В данном примере создаётся 3 потока, и в каждом выполняются определённые действия

Потоки выполняют действия через определённый таймер, РАЗЛИЧНЫЙ для каждого потока
(здесь - раз в секунду, в две и в три)

Вопрос
Почему-то, потоки выполняются строго последовательно, то есть в Application Output всё время
Цитата
Debugging starts
"Run from 1 thread (1)" 
"Run from 1 thread(2)" 
"Run from 1 thread(3)" 
"Run from 1 thread(4)" 
"Run from 2 thread (1)" 
"Run from 2 thread(2)" 
"Run from 2 thread(3)" 
"Run from 2 thread(4)" 
"Run from 3 thread (1)" 
"Run from 3 thread(2)" 
"Run from 3 thread(3)" 
"Run from 3 thread(4)" 
"Run from 1 thread (1)" 
"Run from 1 thread(2)" 
"Run from 1 thread(3)" 
"Run from 1 thread(4)"


Кто-нибудь может подсказать, с чем это связано, и как сделать так, чтобы потоки выполнялись параллельно?

В случае, если удастся этого добиться, нужно будет реализовать мутексы.
Но пока нужно понять, почему они выполняются последовательно

Буду благодарен за любые ответы.
--------------------
stay true
PM MAIL WWW ICQ   Вверх
Lindemann66
Дата 8.9.2011, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinking...
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 2.8.2011
Где: Ульяновск

Репутация: нет
Всего: нет



Всё, приношу извенения.
Сам накосячил. Тема закрыта smile
Не ржите  smile 

Это сообщение отредактировал(а) Lindemann66 - 8.9.2011, 12:58
--------------------
stay true
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.