Как понять что программа работает в двух потоках? |
Здравствуйте, гость ( Вход | Регистрация )
Как понять что программа работает в двух потоках? |
Iron Bug |
4.11.2010, 19:26
Сообщение
#51
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
у меня такое ощущение, что ты совершенно не понимаешь сути параллельной обработки данных.
не поленись, сядь и нарисуй картинку: как всё должно работать, схематически изобрази связи и вызовы и что за чем идёт, стрелками. и потом составь алгоритм обработки, подробно, на бумажке. и только после этого садись писать код. а то ты городишь непонятно что и понятно, что оно не работает. потому что там принципиальные ошибки, даже не программистские, а чисто алгоритмические. |
|
|
RazrFalcon |
4.11.2010, 19:31
Сообщение
#52
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
|
|
|
PAFOS |
30.12.2010, 15:52
Сообщение
#53
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
Вклинюсь в дискуссию)
В свое время много-много убил времени на понимание потоков и как Qt с ними обращается)) Для достижения максимальной производительности необходимо создавать столько потоков, сколько физически одновременно может обработать проц. Для двухядерников идеальным будет два потока, для четырех - четыре. Еще момент, на создание самого потока у системы уходит уйма времени, поэтому не стоит убивать поток сразу после того как он обработал кадр. После обработки кадра, поток должен ждать , когда ему сунут новый кадр для обработки. При таком ожидании лучше всего использовать условные переменные. Условные переменные - разновидность объекта для синхронизации потоков. Вот код, отображающий все вышеперечисленные моменты) в коде я предполагаю, что есть класс Frame, который инкапсулирует такую сущность как кадр с камеры. класс Frame имеет член - int number, который указывает его порядковый номер )
Вероятно многое может показаться непонятным, но я постараюсь ответить на них ) |
|
|
RazrFalcon |
11.1.2011, 22:57
Сообщение
#54
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Большое спасибо. Очень понятный код. Буду разбираться.
У вас опечатка: QWaitCondition processingFinished Еще бы инклуды написали, было бы вообще супер =) Сообщение отредактировал RazrFalcon - 11.1.2011, 22:59 |
|
|
PAFOS |
12.1.2011, 18:38
Сообщение
#55
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
Большое спасибо. Очень понятный код. Буду разбираться. У вас опечатка: QWaitCondition processingFinished Еще бы инклуды написали, было бы вообще супер =) Извиняюсь за опечатки, я писал за 20 минут до завершения последнего рабочего дня ушедшего года)) Этот код лишь как пример, не стоит слепо следовать ему ) |
|
|
RazrFalcon |
24.1.2011, 23:22
Сообщение
#56
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Что мои шаги в многопоточности оооочень медленные.
Может кто нибудь написать мааааленький пример?! В котором будет открываться 10 изображений и поворачиватбся (по 5-ть в потоке), а потом по очереди выводится на форме. Коментарии к коду выше: Constructor c; - что это? |
|
|
igor_bogomolov |
24.1.2011, 23:33
Сообщение
#57
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
|
|
|
RazrFalcon |
24.1.2011, 23:58
Сообщение
#58
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
ЭЭ... Возможно.
Но мне бы пример... |
|
|
Iron Bug |
25.1.2011, 9:17
Сообщение
#59
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Может кто нибудь написать мааааленький пример?! В котором будет открываться 10 изображений и поворачиватбся (по 5-ть в потоке), а потом по очереди выводится на форме. это уже не "мааааленький пример", а вполне себе функциональная утилитка. ты выбери: либо ты хочет стать программистом и тебе нужно много и долго учиться, либо ты работаешь где угодно, платишь деньги и тебе пишут софт другие люди, которым не лень изучать языки и системы. |
|
|
RazrFalcon |
25.1.2011, 19:21
Сообщение
#60
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Мне 19 лет
И я совершенно точно нигде не работаю. А теме уже 3-и месяца, и все это время я пытаюсь с потоками разобраться. Фактически, сейчас у меня проблема только в том что я не понимаю как не дать главному потоку убивать второстепенные до окончания их работы. Вот если второй поток работает меньше главного (aka main) то все работает отлично. Вот и все проблема. А пример нежен для наглядности. В мои планы входит изучение языка, в не воровство чужой интеллектуальной собственности. |
|
|
Текстовая версия | Сейчас: 15.1.2025, 11:06 |