Название: [Решено] QThread и память Отправлено: titan83 от Ноябрь 11, 2014, 15:04 Камрады, выручайте.
Или я дурак, или все-таки лыжи. Делаю поток наследованием от QThread. В run() пишу просто while (true) {}. И как только я этот поток запускаю start(), у меня потребление памяти приложением растет на 9МБ. Если бы я писал для большого ПК, может и просто не заметил, но у меня эмбед и 64МБ всего, поэтому очень заметно. Также использовал QFileSystemWatcher - с ним такая же беда - памяти 10МБ отхватывает, видимо, тоже поток запускает. Вопрос - это всегда такие накладные расходы или я что-то не так делаю? Спасибо. Название: Re: QThread и память Отправлено: vulko от Ноябрь 11, 2014, 15:12 while(true) {} делать не надо.
по фен шую: while(running) { exec(); } Скорее всего что-то не так делаешь. Весь код сюда добавь. Название: Re: QThread и память Отправлено: Old от Ноябрь 11, 2014, 15:13 titan83, уменьшите размер стека для потока:
void QThread::setStackSize(uint stackSize) Название: Re: QThread и память Отправлено: titan83 от Ноябрь 11, 2014, 15:29 titan83, уменьшите размер стека для потока: Old, не знаю насколько вы стары, но вы очень мудры!void QThread::setStackSize(uint stackSize) Спасибо! Сам не дотумкал до такого простого решения( Очень помогли! А то возвращаться к QTimer::singleShot() в качестве убогой имитации потоков очень не хотелось. Название: Re: [Решено] QThread и память Отправлено: vulko от Ноябрь 11, 2014, 15:36 Магистр и правда мудр...
Но неужели дефолтный размер стека 8мб всегда и везде в Qt? Это ж "кроссплатформенное" решение. Название: Re: [Решено] QThread и память Отправлено: titan83 от Ноябрь 11, 2014, 15:40 Но неужели дефолтный размер стека 8мб всегда и везде в Qt? Это ж "кроссплатформенное" решение. Сам в шоке, видать, посоны не парились за такие мелочи...Причем моим потокам на стек надо реально несколько десятков байт. Название: Re: [Решено] QThread и память Отправлено: titan83 от Ноябрь 11, 2014, 15:42 Хотя в доке пишут:
otherwise the maximum stack size is automatically determined by the operating system Так что это надо настройки линуха смотреть. Название: Re: [Решено] QThread и память Отправлено: titan83 от Ноябрь 11, 2014, 15:49 Ну и чтобы окончательно закрыть вопрос.
У меня команда #ulimit -S 8192 Это максимальный размер стека в килобайтах, так что все выглядит очень правдоподобно. Эту величину можно изменить: ulimit -s 1024 Но я пока так делать не буду - ибо влияет это уже на все программы. Ограничусь вариантом от Джедая. |