Russian Qt Forum
Ноябрь 26, 2024, 11:46
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Создание/вызов методов в разных потоках.
Страниц:
1
...
3
4
[
5
]
6
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Создание/вызов методов в разных потоках. (Прочитано 45186 раз)
serg_hd
Хакер
Offline
Сообщений: 668
Re: Создание/вызов методов в разных потоках.
«
Ответ #60 :
Ноябрь 29, 2009, 16:49 »
всё там прыгает как надо, но это только загрузка, она бесполезна, нужен отдельный поток, чтобы работать с каждой загруженной страницей (считывать правила работы со страницей например из файла, ставить задержки и т.п. и т.д.). Надо всё же попробовать WebPage и QWebFrame, вдруг покатит, завтра попробую, а то выходной всё-таки.
Записан
kubuntu/Win7/x64/NetBeans
niXman
Гость
Re: Создание/вызов методов в разных потоках.
«
Ответ #61 :
Ноябрь 29, 2009, 16:55 »
Цитата: serg_hd от Ноябрь 29, 2009, 16:42
niXman, в run()'e у тебя только испускание сигналов и коннекты, это только частичная многопоточность. А то что на видео - просто демонстрация асинхронной работы load(), не многопоточность это. А ведь работать может понадобиться с каждой загруженной страницей отдельно и методы работы с ними будут разные, 100% не асинхронные грубо говоря.
вот если бы я впихнул цикл распределения заданий в основной поток, то да, однопоточность. и ГУИ в этом случае практически не прорисовывается(понятно почему), проверено.
Записан
spectre71
Гость
Re: Создание/вызов методов в разных потоках.
«
Ответ #62 :
Ноябрь 29, 2009, 17:00 »
Это все хорошо.
Но я писал:
Цитата: Spectre от Ноябрь 29, 2009, 15:51
Но есть проблема!
Может этого и нельзя сделать!
WebPage - обязан создаваться в главном потоке, поскольку его родителем будет QWebView
Цитировать
The child of a QObject must always be created in the thread where the parent was created.
Родителем WebFrame является WebPage, все нормально.
Предаем его в другой поток, вызываем там WebFrame::load.
И наш WebFrame при загрузке создает у себя дочерние QWebFrame !!! Что недопустимо, они должны быть созданы в главном потоке!
Никто на это ничего не ответил.
Либо я ошибаюсь, либо загружать в WebFrame можно только в главном потоке!
Записан
serg_hd
Хакер
Offline
Сообщений: 668
Re: Создание/вызов методов в разных потоках.
«
Ответ #63 :
Ноябрь 29, 2009, 17:06 »
Цитата: Spectre от Ноябрь 29, 2009, 17:00
Либо я ошибаюсь, либо загружать в WebFrame можно только в главном потоке!
Это конечно плохо. Но лично я не ответил, т.к. не пробовал, попробую - отпишусь, другого варианта всё равно нет, что касается qt jambi конечно.
Записан
kubuntu/Win7/x64/NetBeans
BRE
Гость
Re: Создание/вызов методов в разных потоках.
«
Ответ #64 :
Ноябрь 29, 2009, 17:08 »
Цитата: Spectre от Ноябрь 29, 2009, 17:00
Никто на это ничего не ответил.
Либо я ошибаюсь, либо загружать в WebFrame можно только в главном потоке!
Я это только предположил, проверять не буду - лень/надоело, подожду результаты заинтересованных лиц.
Записан
niXman
Гость
Re: Создание/вызов методов в разных потоках.
«
Ответ #65 :
Ноябрь 29, 2009, 17:23 »
Цитата: Spectre от Ноябрь 29, 2009, 17:00
Никто на это ничего не ответил.
Либо я ошибаюсь, либо загружать в WebFrame можно только в главном потоке!
думаю это вполне выполнимо. но нужно ковыряться во внутренностях QWebView. чем и занимаюсь.
Записан
niXman
Гость
Re: Создание/вызов методов в разных потоках.
«
Ответ #66 :
Ноябрь 29, 2009, 17:25 »
Кто-нибудь, подскажите, где есть диаграмма наследования Qt ?
Записан
spectre71
Гость
Re: Создание/вызов методов в разных потоках.
«
Ответ #67 :
Ноябрь 29, 2009, 17:28 »
Цитата: serg_hd от Ноябрь 29, 2009, 17:06
Цитата: Spectre от Ноябрь 29, 2009, 17:00
Либо я ошибаюсь, либо загружать в WebFrame можно только в главном потоке!
Это конечно плохо. Но лично я не ответил, т.к. не пробовал, попробую - отпишусь, другого варианта всё равно нет, что касается qt jambi конечно.
Просто попробовать здесь может не помочь. В данной ситуации на тестах все может прокататить, а упадет неизвестно когда и тогда уже даже не поймешь что связано с этой проблемой.
Надо сперва разобраться.
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Создание/вызов методов в разных потоках.
«
Ответ #68 :
Ноябрь 29, 2009, 17:30 »
Цитата: niXman от Ноябрь 29, 2009, 17:25
Кто-нибудь, подскажите, где есть диаграмма наследования Qt ?
см.
Class Inheritance Hierarchy
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
spectre71
Гость
Re: Создание/вызов методов в разных потоках.
«
Ответ #69 :
Ноябрь 29, 2009, 17:31 »
Цитата: niXman от Ноябрь 29, 2009, 17:25
Кто-нибудь, подскажите, где есть диаграмма наследования Qt ?
Assistant:
Qt Reference Documentation->API Reference->Class Chart
Записан
niXman
Гость
Re: Создание/вызов методов в разных потоках.
«
Ответ #70 :
Ноябрь 29, 2009, 17:42 »
Цитата: serg_hd от Ноябрь 29, 2009, 16:42
А ведь работать может понадобиться с каждой загруженной страницей отдельно и методы работы с ними будут разные, 100% не асинхронные грубо говоря.
Да, в этом случае, моим методом не обойтись. Но я же не это проверял. Просто продемонстрировал возможность одновременной работы вьюшек с распределением заданий из
одного
потока.
А если алгоритм работы с содержимым вьюшек синхронный, значит его в поток. Но вьюшки пихать в тот же поток
не за чем
!
1. для каждой вьюшки отдельный поток в котором реализован алгоритм.
2. сигналы и слоты этого потока соединяются с этой вьюшкой.
3. так как каждый сценарий выполняется в отдельной потоке, нам нужно декларировать в нем один сигнал, и один слот.
3.1 signalRunScenarie(scenarie);
3.2 slotScenarieFinish(bool);
как-то так
«
Последнее редактирование: Ноябрь 29, 2009, 17:49 от niXman
»
Записан
niXman
Гость
Re: Создание/вызов методов в разных потоках.
«
Ответ #71 :
Ноябрь 29, 2009, 17:48 »
Spectre
,
pastor
спасибо.
Кстати в моем примере, на одном ядре 2.3 ггц, для 100% загрузки, нужно запустить 370 вьюшек. памяти съедает 690 метров. Что вполне нормально. Так что если распараллелить программу на несколько ядер, то даже гугл позавидует
«
Последнее редактирование: Ноябрь 29, 2009, 18:09 от niXman
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Создание/вызов методов в разных потоках.
«
Ответ #72 :
Ноябрь 29, 2009, 18:35 »
Цитата: niXman от Ноябрь 29, 2009, 17:48
Кстати в моем примере, на одном ядре 2.3 ггц, для 100% загрузки, нужно запустить 370 вьюшек. памяти съедает 690 метров. Что вполне нормально. Так что если распараллелить программу на несколько ядер, то даже гугл позавидует
Приятно видеть приличный объем
Но на одном ядре есть подлянка: часто оно "работает" с нитками, все нормально. А когда запускаем там где физически 2 или более процессора - оно валится. Надо как-то отладить, приходится проситься к кому-то на машину - а это никому не приятно и.т.п. Просто имейте ввиду.
Записан
niXman
Гость
Re: Создание/вызов методов в разных потоках.
«
Ответ #73 :
Ноябрь 29, 2009, 19:12 »
Цитировать
Приятно видеть приличный объем Улыбающийся Но на одном ядре есть подлянка: часто оно "работает" с нитками, все нормально. А когда запускаем там где физически 2 или более процессора - оно валится. Надо как-то отладить, приходится проситься к кому-то на машину - а это никому не приятно и.т.п. Просто имейте ввиду.
Так это дело техники
Кстати у меня 4 ядра, и ничего, работает
Записан
niXman
Гость
Re: Создание/вызов методов в разных потоках.
«
Ответ #74 :
Ноябрь 29, 2009, 19:40 »
Spectre, pastor
, по всем ссылкам что я нашел, есть только чарты версии 4.3 а в ней нет упоминаний про WebKit.
Идеи?
Записан
Страниц:
1
...
3
4
[
5
]
6
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...