Russian Qt Forum
Ноябрь 22, 2024, 23:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как проверить сколько можно запустить параллельных потоков?  (Прочитано 4630 раз)
vbi
Гость
« : Август 05, 2013, 11:51 »

Есть многопоточная программа. На 20 потоках работает без проблем.
Но если ограничение поставить 500, тогда программа сразу же вылетает с ошибкой Runtime error.



Runtime error вылетает всегда на коде QString::mid().

Проверял, параметры передаются туда правильно. Очевидно не хватает памяти приложению?

Так же окно вывода приложения выводит следующее:
Код:
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Пробовал ловить в try, но Эта ошибка не ловится.

P.S. Если поставить не 500 а 200 потоков, то приложение всеравно отваливается, но уже через пол часа работы.

В чем может быть проблема?
Записан
Bepec
Гость
« Ответ #1 : Август 05, 2013, 12:06 »

Максимальное число потоков определяется системой. Максимальное число потоков на моём i3 - 61.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #2 : Август 05, 2013, 12:09 »

Максимальное число потоков определяется системой. Максимальное число потоков на моём i3 - 61.
Я бы сказал, что это больше от количества оперативной памяти зависит, нежили от процессора.
Записан
vbi
Гость
« Ответ #3 : Август 05, 2013, 12:56 »

Тогда как определить это и избавится от ошибки?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Август 05, 2013, 13:53 »

P.S. Если поставить не 500 а 200 потоков, то приложение всеравно отваливается, но уже через пол часа работы.

В чем может быть проблема?
Посмотрите расход памяти на старте и через полчаса - выглядит как утечка в каждой нитке. А вообще 500 - не ускорение а наоборот, ядра-то не вырастают, а время на переключение тратится
Записан
vbi
Гость
« Ответ #5 : Август 05, 2013, 14:10 »

Хорошо, спасибо. Ставлю виртуальную машину и Ubuntu. Буду валгриндом проверять.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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