QThread и QNetworkAccessManager |
Здравствуйте, гость ( Вход | Регистрация )
QThread и QNetworkAccessManager |
di.em |
17.3.2011, 14:14
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 17.3.2011 Пользователь №: 2511 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть класс Thread наследуемый от QThread
вот его run(): void Thread::run()
при создании нескольких объектов данного класса + ->start() Часто конфликты мутексов и памяти: QMutex::lock: mutex lock failure: Недопустимый аргумент *** glibc detected *** ... : corrupted double-linked list: 0x081f8e18 *** ... Объясните пожалуйста причину такого странного поведения |
|
|
ufna |
17.3.2011, 17:00
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5 |
|
|
|
di.em |
17.3.2011, 20:03
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 17.3.2011 Пользователь №: 2511 Спасибо сказали: 0 раз(а) Репутация: 0 |
Да, спасибо, вчера надыбал эту тсатью. Всё равно не понимаю сути. У меня какая ситуация, есть свой класс Http (синхронный), то есть ->post или ->get, далее луп кручу эвентов, пока не будет finished или readyRead от нетворкменеджера. Сделал так, потому что, если вешать на каждый finished свой слот - то при последовательном скачивании нескольких страниц с разными url и дальнейшей обработкой - получаеться очень много кода (куча слотов), очень сложно отлаживать. Буду конечно переделывать, и хорошенечко ещё посмотрю http://ufna.ru/2010/10/27/qt-qnetworkacces...ger-multithread. |
|
|
ufna |
17.3.2011, 20:39
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5 |
я лично делаю один слот finished, но в зависимости от objectName, который я задал QReply (который в финишд и войдет как sender()), кидаю разным обработчикам и все. Один слот, один механизм, профит.
Не понял правда в чем заключается последний вопрос По сабжу в принципе объект удаляется при выходе из функции, но какому потоку он принадлежит? Тут все так лево, что с асинхронными апи надо быть уверенным что все лежит там, где надо. |
|
|
di.em |
17.3.2011, 23:30
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 17.3.2011 Пользователь №: 2511 Спасибо сказали: 0 раз(а) Репутация: 0 |
Не понял правда в чем заключается последний вопрос По сабжу в принципе объект удаляется при выходе из функции, но какому потоку он принадлежит? Тут все так лево, что с асинхронными апи надо быть уверенным что все лежит там, где надо. Если сделать что то вроде
И не вешать, никаких сигналов на quit() трэда (run никогда не завершиться, а nm не будет удалён), всё равно выскакивают ошибки конфликтов мьютэксов и выделения памяти. Интересно почему так ведёт себя, nm видимо использует какие-то общие ресурсы, не знаю. Ну собственно вы с подобным поведением (судя по вашей статье) тоже сталкивались. Так то программу переписал, более удобно для себя, без использования трэдов, как и положенно. |
|
|
ufna |
18.3.2011, 1:32
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5 |
честно говоря, я забыл уже чего там ) проблема была, разобрался, понял что так делать не стоит, запомнил что надо делать и забыл почему. Там с потоками и "родительствами" все связано, завтра посмотрю, сегодня сидр имеет место быть (
|
|
|
di.em |
18.3.2011, 2:52
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 17.3.2011 Пользователь №: 2511 Спасибо сказали: 0 раз(а) Репутация: 0 |
честно говоря, я забыл уже чего там ) проблема была, разобрался, понял что так делать не стоит, запомнил что надо делать и забыл почему. Там с потоками и "родительствами" все связано, завтра посмотрю, сегодня сидр имеет место быть ( Ну спасибо всё равно, если бы не статься я зашёл бы в полный ступор ) |
|
|
Текстовая версия | Сейчас: 15.1.2025, 10:46 |