предИстория... если интересно:
писал я расчетные програмки в матлабе и не знал проблем...
матлаб распаралеливал и контролировал ресурсы сам...
(около 100 однообразных расчетов с разным параметром Х)... половину дня уходило на это...
решил я испытать с++... и! на один расчет в 10 раз меньше времени затрат... (без распаралеливания)...
далее GUI и Qt... и потоки... (наверное картинка была бы уместнее)
для GUI поток уровня 0... далее кнопки которые создают потоки уровня 1.
1-я Одиночный расчет (с параметром X=1) в один поток уровня 1 (<10 сек).
2-я многопоточный расчет (с параметром Х от 1 до n) в поток уровня 1.
в последнем потоке я создаю n потоков (одновременно) с разным параметром Х...
и тут появляются проблемы... CPU (4 ядра 1.7 ГГц) все на 100%... на ~1 минуту (если до 20 потоков [расчетов])...
но это было пол беды...
далее запустил расчеты на ~100 потоков... и понеслось... на 5 минут проц 100% (98 на саму програму 2 на остальное)... и в конце началось:
Memory used: 99% (4 Gb); Swap: 99% (4 Gb)...
и в конце: The program has unexpectedly finished.
так вот собственно вопрос... можно ли как то задать проге кушать ~60% свободной «нагрузки» на проц (както задать низкий приоритет?)... или создавать оптимальное количество потоков и туда попорядку бросать расчеты? или... или...
+ не пойму почему забило всю оперативку и свап... в конце...