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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QtConcurrent Создание множества потоков  (Прочитано 1104 раз)
Zusykss
Самовар
**
Offline Offline

Сообщений: 120


Просмотр профиля
« : Январь 06, 2018, 02:22 »

Добрый вечер друзья.
Я создаю таким способом 10 потоков
Код:
for(int i = 0; i < m_donors.size(); i++)
    {
        ObjThread * thread = new ObjThread(); // обертка для QFuture<void> QFutureWatcher<void>
        m_listThreads.push_back(thread);
        m_listThreads[i]->getValues(QtConcurrent::run(this, &Presenter::processStartOne,m_donors[i], thread->working));
    }


Из 10 потоков которые созданы, запускается только 4 остальные ничего не делают
В потоках работаю с сетью, через QNetworkAccessManager
Примерно такой код

Код:
    while(do_work)
    {
        if (!donor.m_enable) {
            QThread::sleep(1);
            continue;
        }

        if (!donor.m_enable) continue;

        donor_1->getValues(donor.m_pair); // запрос №1
        donor_2->getValues(donor.m_pair); // запрос №2


Подскажите что-то толковое как решить такую проблему? Непонимающий Непонимающий
Записан
qate
Птица говорун
*****
Offline Offline

Сообщений: 908


Просмотр профиля
« Ответ #1 : Январь 06, 2018, 20:57 »

QThreadPool::globalInstance()->maxThreadCount() == 4 ?
Записан
Zusykss
Самовар
**
Offline Offline

Сообщений: 120


Просмотр профиля
« Ответ #2 : Январь 07, 2018, 16:30 »

QThreadPool::globalInstance()->maxThreadCount() == 4 ?

Да
Записан
Zusykss
Самовар
**
Offline Offline

Сообщений: 120


Просмотр профиля
« Ответ #3 : Январь 07, 2018, 19:02 »

Если у кого-то есть решение, или идеи как можно одновременно запустить больше потоков чем максимальное количество и вообще реально ли это.

Сообщите будет интересно узнать Подмигивающий
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 624


Просмотр профиля WWW
« Ответ #4 : Январь 07, 2018, 19:17 »

А вы уверены, что вам вообще нужно такое количество потоков? Для чего это делается? QNetworkAccessManager сам по себе асинхронный и может исполнять несколько запросов сразу.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
qate
Птица говорун
*****
Offline Offline

Сообщений: 908


Просмотр профиля
« Ответ #5 : Январь 07, 2018, 19:45 »

QThreadPool::globalInstance()->maxThreadCount() == 4 ?

Да

и еще не догадался ?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

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