Название: Как проверить сколько можно запустить параллельных потоков? Отправлено: vbi от Август 05, 2013, 11:51 Есть многопоточная программа. На 20 потоках работает без проблем.
Но если ограничение поставить 500, тогда программа сразу же вылетает с ошибкой Runtime error. (http://f4.s.qip.ru/eLukkPIM.png) Runtime error вылетает всегда на коде QString::mid(). Проверял, параметры передаются туда правильно. Очевидно не хватает памяти приложению? Так же окно вывода приложения выводит следующее: Код: Invalid parameter passed to C runtime function. Пробовал ловить в try, но Эта ошибка не ловится. P.S. Если поставить не 500 а 200 потоков, то приложение всеравно отваливается, но уже через пол часа работы. В чем может быть проблема? Название: Re: Как проверить сколько можно запустить параллельных потоков? Отправлено: Bepec от Август 05, 2013, 12:06 Максимальное число потоков определяется системой. Максимальное число потоков на моём i3 - 61.
Название: Re: Как проверить сколько можно запустить параллельных потоков? Отправлено: Old от Август 05, 2013, 12:09 Максимальное число потоков определяется системой. Максимальное число потоков на моём i3 - 61. Я бы сказал, что это больше от количества оперативной памяти зависит, нежили от процессора.Название: Re: Как проверить сколько можно запустить параллельных потоков? Отправлено: vbi от Август 05, 2013, 12:56 Тогда как определить это и избавится от ошибки?
Название: Re: Как проверить сколько можно запустить параллельных потоков? Отправлено: Igors от Август 05, 2013, 13:53 P.S. Если поставить не 500 а 200 потоков, то приложение всеравно отваливается, но уже через пол часа работы. Посмотрите расход памяти на старте и через полчаса - выглядит как утечка в каждой нитке. А вообще 500 - не ускорение а наоборот, ядра-то не вырастают, а время на переключение тратится В чем может быть проблема? Название: Re: Как проверить сколько можно запустить параллельных потоков? Отправлено: vbi от Август 05, 2013, 14:10 Хорошо, спасибо. Ставлю виртуальную машину и Ubuntu. Буду валгриндом проверять.
|