![]() |
|
|
![]()
|
|
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
здраствуйте, у меня приложение работает по схеме - получил ссылку , обработал , выдал результат, но когда ссылок много оно реально подвисает. как сделать чтобы загрузка процесора была бы поменьше. я так понимаю что надо процес обработки помещать в отдельный процес и его потом на время задерживать его исполнение? ну задерживать эт я знаю можно с помощью SleeperThread::msleep();. а вот как открыть в отдельном процесе? ну вообщем посоветуйте что надо сделать?
--------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 2 Всего: 50 |
http://doc.qt.nokia.com/latest/threads-starting.html
http://web.mit.edu/qt/www/qthread.html Добавлено через 40 секунд
в отдельный поток |
|||
|
||||
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
все, с процесами разобрался, теперь другая проблема . идет утечка памяти. пробовал решить таким способом
но это проблему не решило , память как уходила так и уходит, прога сначало имеет вес 90 метров в оператве и через минут 7 уже полгига, через полчаса забирает на себя всю оператву. как это можно эфективно решить? --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
pycha, внимательно просмотри все new. Каждому должен соответствовать свой delete. Причём он должен быть не только написан, но и должен вызываться
Вообще-то, не видя кода, сказать что-либо можно только обладая телепатией. У меня оная не развита -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
все что связано с потоком в этих строках
при окончании обработки в потоке вызываю quit(); я думал что в qt деструктор вызывается сам Это сообщение отредактировал(а) pycha - 30.6.2011, 07:36 --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
вызывается, если 1) Твой объект наследован от QObject 2) В качестве paernt'а указан не 0, а другой QObject, который, собственно, и вызывает деструктор. Небольшая ремарка: Qt - это не язык, и даже, по большому счёту, не Framework. Qt - это набор Си++-ных классов, поэтому само в нём ничего не происходит. потоки сами по себе не могут вызывать лики памяти. Их вызывает то, что в какой-то функции выделяется память, эта память нигде не освобождается, и эта функция постоянно вызывается, например в потоке. И всё-таки маловато данных, чтобы понять, где у тебя течёт память -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
функция, в которой находится обьявление этого потока, вызывается 6 -10 раз в минуту, с каждым вызовом функции создается новый поток который не убивается по окончании процедуры в нем и со временем количество неубитых потоков возрастает все больше и тянут на себя все больше оперативки. мне надо найти способ который поможет правильно убить поток после окончания обработки в нем так чтобы освободилась память
кстати может пригодится, вот как я обьявил сам поток
по идеи вроде правильно Это сообщение отредактировал(а) pycha - 1.7.2011, 00:11 --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
pycha, всё равно данных недостаточно. Покажи весь проект, только убери из него непосредственно обработку (поставь вместо неё троеточие). Во-первых и ты код не будешь раскрывать, во-вторых искать ошибку будет проще
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
--------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
ууууу. тут целый ворох проблем. начнём (закатывает рукава)
1. В ф-ции zagruzkaStranici создаётся QNetworkAccessManager *manager и нигде не удаляется. 2. В ф-ции zagruzkaFinished создаётся QWebView *text и нигде не удаляется 3. Ф-ция MyThread::obrabotka выполняется в этом же (в интерфейсном) потоке, а созданный поток живёт совсем немного, т.к. в ф-ции MyThread::run() ничего нет
щаз немного занят, поэтому подумай сам пока, что надумаешь - пиши сюда, а я потом посмотрю и помогу допилить. Ok ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| pycha |
|
||||||||||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
что сделал: посвавил delete для text. как удалить QNetworkAccessManager *manager незнаю, пробовал после того он передал QNetworkReply* подать сигнал и соеденить его с deleteLater() у менеджера но получилась капосная вещь.
дальше поток: добавил функцию
которая перед стартом потока принимает значения которые надо обрабабывать обработку поместил в run
вот так сейчас создаю поток
в поиках решения попал на эту статью, в исходниках у себя обьявил
и подкоректировал вот тут
но память все продолжает течь Это сообщение отредактировал(а) pycha - 1.7.2011, 19:18 --------------------
ищу хакера со знанием компьютера длятехкт |
||||||||||
|
|||||||||||
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
все, вопрос решен. утечка была какраз из за QWebView. там если его сразу уничтожать то сервер понимал что работает бот и поэтому я его оставил. потом попробовал его соединить с QTimer чтобы его вырубало через определенное время и все пошло как по маслу, извините за подпоченые нервы.
Это сообщение отредактировал(а) pycha - 5.7.2011, 19:59 --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |