Russian Qt Forum
Август 17, 2018, 09:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема qthread::start:failed to create thread  (Прочитано 843 раз)
Zusykss
Самовар
**
Offline Offline

Сообщений: 116


Просмотр профиля
« : Май 03, 2018, 20:47 »

Добрый вечер всем
Проблема следующая, в проекте использую множество потоков может быть одновременно до 200 штук, в каждом потоке в разных методах создаются QNetworkAccessManager, и через какое-то время (оно разное в зависимости от количества запущенных задач) программа зависает и вываливается краш программы.

Пробовал создать один менеджер на весь проект но так нельзя...
Может кто-то делал похожую задачу.

пример кода:

Код:

    std::unique_ptr <QNetworkAccessManager> manager;
    manager.reset(new QNetworkAccessManager);
    QString nonce, encrypt;
    encrypt = generate_encrypt(nonce, m_API_SECRET);
    QString end = QString("/api/v3/account?timestamp=%1&signature=%2").arg(nonce).arg(encrypt);
    QString url = m_BASE_URL + end;

    QNetworkRequest request;
    request.setUrl(QUrl(url));

    QNetworkReply * reply = manager->get(request);

    QEventLoop loop;
    QObject::connect(reply, QNetworkReply::readyRead, &loop, QEventLoop::quit);
    loop.exec();

    QString responce = reply->readAll();
Записан
qate
Гипер активный житель
*****
Offline Offline

Сообщений: 887


Просмотр профиля
« Ответ #1 : Май 03, 2018, 21:34 »

краш это хорошо - бери корку и смотри где упал
Записан
Zusykss
Самовар
**
Offline Offline

Сообщений: 116


Просмотр профиля
« Ответ #2 : Май 04, 2018, 07:35 »

У меня в проекте около 20 методов где создается
std::unique_ptr <QNetworkAccessManager> manager;
    manager.reset(new QNetworkAccessManager);

Из-за этого и происходит краш
Записан
qate
Гипер активный житель
*****
Offline Offline

Сообщений: 887


Просмотр профиля
« Ответ #3 : Май 04, 2018, 09:29 »

делай минимально рабочий падающий пример
иначе только гадать что там в методах делается - падение ли от создания QNetworkAccessManager или его обработки
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2576


Просмотр профиля
« Ответ #4 : Май 04, 2018, 15:41 »

афаик, QNAM внутри создает треды (несолько), 200 тредов*количество тредов в QNAM == краш
Записан
Zusykss
Самовар
**
Offline Offline

Сообщений: 116


Просмотр профиля
« Ответ #5 : Май 04, 2018, 21:47 »

Так, если я в программе могу создать при запуске программы около 50 потоков и каждый поток создаст еще по менеджеру, а можно еще создать в дополнительном режиме +3 потока на каждую запущенную задачу...
Так этот краш будет постоянно вылетать

Вы не знаете, есть возможно увеличить колличество потоков на приложение ??
Например вместо 200 установить 1000 ??

Или что вы можете посоветовать ?
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 316


Просмотр профиля
« Ответ #6 : Май 04, 2018, 22:03 »

...
Или что вы можете посоветовать ?

По мне, так, задача будто предназначена для реализации на Go )
Записан
zhbr
Новичок

Offline Offline

Сообщений: 29


Просмотр профиля
« Ответ #7 : Май 05, 2018, 07:22 »

А зачем так много потоков? имхо одновременная работа >20 потоков расточительно.
может проще переделать программу под QThreadPool+QtConcurrent::run или QThreadPool+QRunnable
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 10108


Просмотр профиля
« Ответ #8 : Май 05, 2018, 07:51 »

Конечно это "не по делу", но..
Проблема следующая, в проекте использую множество потоков может быть одновременно до 200 штук, ..
Лично мне читать дальше уже не хочется, вникать в приведенный фрагмент кода - тем более. Если сорят нитками - такая архитектурой хорошей быть не может. И надо ее менять "в прынцыпе" (а не латать)
Записан
Zusykss
Самовар
**
Offline Offline

Сообщений: 116


Просмотр профиля
« Ответ #9 : Май 06, 2018, 06:00 »

Проблема решена, использую 1 менеджер на весь проект, связал его с другими потоками сигналами и слотами. Смеющийся

Все спасибо кто откликнулся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Страница сгенерирована за 0.048 секунд. Запросов: 22.