crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Как понять что программа работает в двух потоках?
RazrFalcon
  опции профиля:
сообщение 4.10.2010, 14:31
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Есть простой пример из хелпа
.срр
#include <QtCore/QCoreApplication>
#include <QString>
#include "thread.h"
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    MyThread th, th2;
    th.start();
    th2.start();
    return a.exec();
}

void MyThread::run()
{
     for( int count = 0, x=0; count < 20000000; count++, x++ )
{
         qDebug()<<x;
     }
}
.h
#ifndef THREAD_H
#define THREAD_H

#include <qthread.h>
#include <QThread>

class MyThread : public QThread
{
     Q_OBJECT

protected:
     void run();
};



#endif // THREAD_H
.pro
QT       += core thread

QT       -= gui

TARGET = temp
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

HEADERS += \
    thread.h

а вот вывод такой:
...
406010
406011
406012
406013
406014
406015
...
а по идее должен быть типа
...
406010
406010
406011
406011
406012
406012
...
PS: как присвоить приоритет
th.start(Priority priority = HighestPriority);
Так не хочет (из хелпа)
th2.setPriority(QThread::HighestPriority);
вот так ^_^

После применения приоритетов
713245
726544
713246
726545
713247
726546
выходит один спешит? не пойму совсем
"к слову скрин загрузки"


PSS: можно ли выбрать ядро для выполнения функции?

Сообщение отредактировал RazrFalcon - 4.10.2010, 15:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
RazrFalcon
  опции профиля:
сообщение 5.10.2010, 18:21
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Еще парочку моментов.
1) Когда я создаю 2-а потока, то на самом деле их 3-и.
2) Я не выбираю ядра, то есть сама система выбирает. Она может их (потоки) поменять местами во время работы?
3) Когда прога работает основным потоком, а потом я создаю 2-й поток, то он помещается на свободное ядро (1-е, 2-е, 3-е и тд).
4) Как я понял с гуем и файлами лучше работать в один поток.

Сообщение отредактировал RazrFalcon - 5.10.2010, 18:22
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 5.10.2010, 20:02
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(RazrFalcon @ 5.10.2010, 19:21) *
Еще парочку моментов.
1) Когда я создаю 2-а потока, то на самом деле их 3-и.
2) Я не выбираю ядра, то есть сама система выбирает. Она может их (потоки) поменять местами во время работы?
3) Когда прога работает основным потоком, а потом я создаю 2-й поток, то он помещается на свободное ядро (1-е, 2-е, 3-е и тд).
4) Как я понял с гуем и файлами лучше работать в один поток.

1) Да ты создаешь не 2-а потока а 2-а дополнительных потока. Ведь main тоже должен выполняться в потоке, поэтому у любой программы сразу есть один поток, это "основной поток". В нем отрисовываются/обновляются контролы. Замечал наверное, иногда окна программ становятся белыми, и программы не отвечают на нажатия кнопок и мыши, это когда основной поток чем то сильно занят и не успевает обработать GUI.

2) Ядра ты не выбираешь, система сама лучше знает как разместить задачи. Ведь в системе кроме твоей программы еще куча всего крутиться, и другие программы то-же хотят поработать, так что это задача системы оптимально раскидать задачи по ядрам.

3) Скорее всего да. Хотя на 100% гарантировать нельзя, смотри п.2 про чужие программы.

4) С гуем лучше работать не просто в один поток а в основном потоке. А что значит с файлами? Простая ситуация если одновременно надо обрабатывать несколько файлов - можно каждый файл обрабатывать в отдельном потоке. Но надо помнить о синхронизации между потоками. Гораздо более сложная ситуация если надо обрабатывать один большой файл, если работу можно разбить на одновременные подзадачи, то можно обрабатывать части файла в несколько потоков. Но это гораздо сложнее с точки зрения синхронизации. В общем делать потоки, или нет, и сколько зависит от задачи.


P.S. Какие у тебя разнообразные интересы и GUI/CLI, и библиотеки, и время выполнения, и потоки. Ты просто изучаешь разные вещи или что-то реальное пишешь, во втором случае IMHO что-то ты с дизайном программы мудришь, возможно твою задачу можно решить проще. Опиши задачу, тебе подскажут куда копать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 5.10.2010, 22:34
Сообщение #4


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Цитата(Sokoloff @ 5.10.2010, 20:02) *
А что значит с файлами?
Да я про обычный текстовик думал. Ну а в принципе все как я и думал.
Цитата(Sokoloff @ 5.10.2010, 20:02) *
P.S. Какие у тебя разнообразные интересы и GUI/CLI, и библиотеки, и время выполнения, и потоки. Ты просто изучаешь разные вещи или что-то реальное пишешь, во втором случае IMHO что-то ты с дизайном программы мудришь, возможно твою задачу можно решить проще. Опиши задачу, тебе подскажут куда копать.
оффтоп
В общем я мучать начал openCV. А потом пошло. Интерфейс не нужен в общем - значит надо с консолькой разобраться, ну или лубу написать а потом подключать к гую. Потом понял что виснет безбожно - распараллеливание. Потом надо понять на сколько мои усилия сделали ее более быстрой - вот и время понадобилось. А в общем я просто решил поучится разному. Дизайнер из меня никудышный, вот и мучаю всякое. Начал OGRE и bullet physics учить, понял что многого не знаю, а они без оптимизации вообще деревянные и на моем ноуте не первой свежести вообще еле идут. Вот и решил основам оптимизации поучится. Помочь мне нечем, просто сталкиваюсь с проблемой и пытаюсь решить походу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 5.10.2010, 23:26
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(RazrFalcon @ 5.10.2010, 23:34) *
Цитата(Sokoloff @ 5.10.2010, 20:02) *
А что значит с файлами?
Да я про обычный текстовик думал. Ну а в принципе все как я и думал.

Если обычный текстовик и размер не большой, то не парься читай в основном потоке, никто задержки не заметит.

Про OpenCV подсказать не смогу, не сталкивался. Про GUI/CLI ответил в другом треде.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- RazrFalcon   Как понять что программа работает в двух потоках?   4.10.2010, 14:31
- - Алексей1153   Цитата(RazrFalcon @ 4.10.2010, 17:31) а п...   4.10.2010, 18:31
|- - RazrFalcon   Цитата(Алексей1153 @ 4.10.2010, 18:31) эт...   4.10.2010, 19:02
- - Алексей1153   в среднем где-то на 75% загружен процессор у тебя...   4.10.2010, 19:32
|- - RazrFalcon   Цитата(Алексей1153 @ 4.10.2010, 19:32) а ...   4.10.2010, 20:06
- - Алексей1153   Цитата(RazrFalcon @ 4.10.2010, 23:06) Поч...   4.10.2010, 20:11
|- - RazrFalcon   Цитата(Алексей1153 @ 4.10.2010, 20:11) ну...   4.10.2010, 20:14
- - Алексей1153   Цитата(RazrFalcon @ 4.10.2010, 23:14) Неп...   4.10.2010, 20:43
|- - RazrFalcon   Ну в общем понятно. Ну я так понимаю желательно ко...   4.10.2010, 21:05
- - ufna   думаю средствами Qt этого не сделать, нужно копать...   5.10.2010, 9:19
- - RazrFalcon   Еще парочку моментов. 1) Когда я создаю 2-а потока...   5.10.2010, 18:21
|- - Sokoloff   Цитата(RazrFalcon @ 5.10.2010, 19:21) Еще...   5.10.2010, 20:02
|- - RazrFalcon   Цитата(Sokoloff @ 5.10.2010, 20:02) А что...   5.10.2010, 22:34
|- - Sokoloff   Цитата(RazrFalcon @ 5.10.2010, 23:34) Цит...   5.10.2010, 23:26
- - CodeHunter   Цитата(RazrFalcon @ 5.10.2010, 18:21) Она...   5.10.2010, 18:49
- - Iron Bug   по первому посту: если юзаешь вывод куда-то - это ...   6.10.2010, 10:53
- - RazrFalcon   И снова непонятно что cpp#include <QtCore/QCor...   11.10.2010, 21:01
- - Алексей1153   RazrFalcon, ОС раздаёт всем потокам всех процессов...   12.10.2010, 6:18
|- - RazrFalcon   Цитата(Алексей1153 @ 12.10.2010, 6:18) Мн...   12.10.2010, 14:38
- - Iron Bug   Цитата(RazrFalcon @ 12.10.2010, 0:01) В в...   12.10.2010, 6:49
- - Алексей1153   гы, а я и не обратил внимания ))   12.10.2010, 7:03
- - Iron Bug   Цитата(RazrFalcon @ 12.10.2010, 17:38) Гл...   12.10.2010, 15:11
- - RazrFalcon   Так все и выясняется. Ну в общем ясно. Буду пробов...   12.10.2010, 15:29
- - Алексей1153   Цитата(RazrFalcon @ 12.10.2010, 18:29) My...   12.10.2010, 18:56
|- - RazrFalcon   Цитата(Алексей1153 @ 12.10.2010, 18:56) н...   12.10.2010, 19:20
- - Алексей1153   RazrFalcon, когда return 0 выкидывает из функции m...   12.10.2010, 20:31
|- - RazrFalcon   Алексей1153 без return 0 вообще не стартует, то ес...   12.10.2010, 22:25
- - Iron Bug   читать и читать, как создаются и работают потоки и...   13.10.2010, 6:53
|- - RazrFalcon   Что за ерунда, прога работает только если функция ...   14.10.2010, 20:19
- - igor_bogomolov   RazrFalcon, ты бы документацию читал, там все подр...   14.10.2010, 20:38
|- - RazrFalcon   Цитата(igor_bogomolov @ 14.10.2010, 20:38...   14.10.2010, 20:48
- - RazrFalcon   Опять в один поток идет все!Раскрывающийся тек...   18.10.2010, 19:28
- - Алексей1153   Цитата(RazrFalcon @ 18.10.2010, 22:28) Оп...   18.10.2010, 20:07
- - RazrFalcon   В том то и проблема. Если использовать start - то ...   18.10.2010, 20:14
- - Алексей1153   RazrFalcon, пипец... конечно же, если в цикле выз...   18.10.2010, 20:23
|- - RazrFalcon   Цитата(Алексей1153 @ 18.10.2010, 20:23) П...   18.10.2010, 20:28
- - Алексей1153   вот смотри, наглядно то, что ты сделал - с одним п...   18.10.2010, 20:39
- - RazrFalcon   Логика работы потоков мне ясна, я не понимаю тока ...   18.10.2010, 20:47
- - Алексей1153   Цитата(RazrFalcon @ 18.10.2010, 23:47) Ло...   18.10.2010, 21:01
- - RazrFalcon   Мне нужна многопоточность, только для ускорения ра...   18.10.2010, 22:11
- - Алексей1153   RazrFalcon, если хочешь выжать из процессора мак...   19.10.2010, 6:43
- - RazrFalcon   Ладно, буду пробовать. А то что, больше потоков, б...   19.10.2010, 8:49
- - Алексей1153   Цитата(RazrFalcon @ 19.10.2010, 11:49) Ла...   19.10.2010, 8:56
|- - RazrFalcon   Цитата(Алексей1153 @ 19.10.2010, 8:56) Чт...   19.10.2010, 10:53
- - Iron Bug   Цитата(Алексей1153 @ 19.10.2010, 0:01) я ...   19.10.2010, 9:28
- - Алексей1153   RazrFalcon, поток - это понятие ОС (и даже - проце...   19.10.2010, 11:33
- - Iron Bug   Цитата(RazrFalcon @ 19.10.2010, 13:53) У ...   19.10.2010, 13:03
- - RazrFalcon   Разобрался с потоками в общем. Но теперь другая пр...   4.11.2010, 18:41
- - Iron Bug   а зачем ты в цикле создаёшь и убиваешь стопицот по...   4.11.2010, 18:57
- - RazrFalcon   Создаю каждый раз поток, так как, если через дебаг...   4.11.2010, 19:16
- - Iron Bug   у меня такое ощущение, что ты совершенно не понима...   4.11.2010, 19:26
- - RazrFalcon   Сейчас нарисую Я и не отрицаю свои ошибки. Я да...   4.11.2010, 19:31
|- - PAFOS   Вклинюсь в дискуссию) В свое время много-много уб...   30.12.2010, 15:52
- - RazrFalcon   Большое спасибо. Очень понятный код. Буду разбират...   11.1.2011, 22:57
|- - PAFOS   Цитата(RazrFalcon @ 11.1.2011, 22:57) Бол...   12.1.2011, 18:38
- - RazrFalcon   Что мои шаги в многопоточности оооочень медленные....   24.1.2011, 23:22
- - igor_bogomolov   Цитата(RazrFalcon @ 24.1.2011, 23:22) Ком...   24.1.2011, 23:33
- - RazrFalcon   ЭЭ... Возможно. Но мне бы пример...   24.1.2011, 23:58
- - Iron Bug   Цитата(RazrFalcon @ 25.1.2011, 1:22) Може...   25.1.2011, 9:17
- - RazrFalcon   Мне 19 лет И я совершенно точно нигде не работа...   25.1.2011, 19:21
- - igor_bogomolov   RazrFalcon, и мы сейчас отказываемся помогать не и...   25.1.2011, 19:40
- - PAFOS   ЦитатаФактически, сейчас у меня проблема только в ...   26.1.2011, 9:42
|- - RazrFalcon   Цитата(PAFOS @ 26.1.2011, 8:42) Если убит...   26.1.2011, 20:49
- - igor_bogomolov   Цитата(RazrFalcon @ 26.1.2011, 20:49) Я е...   26.1.2011, 21:29
- - Алексей1153   Цитата(RazrFalcon @ 25.1.2011, 21:21) как...   27.1.2011, 20:45


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


20 чел. читают эту тему (гостей: 20, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 14.1.2025, 21:32