| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Динамическое создание потоков |
| Автор: chubaka 30.4.2009, 11:08 |
| Здравствуйте. Есть программа, которая на протяжении своей жизни постоянно создает и удаляет потоки. В идеале она не должна выключаться совсем. Создаю потоки pthread_create, завершаю pthread_join. Смотрю сколько памяти занимает программа - после каждого освобождения потока она не освобождается. Подскажите пожалуйста как правильно создавать и завершать потоки. И еще. Нужно ли в обработчике потока, в самой функции которая работает как поток, в конце выполнять какието действия по освобождению ? Динамической памяти функция не создает. |
| Автор: azesmcar 30.4.2009, 13:08 | ||||
я чего-то не понял? с каких пор pthread_join завершает поток? Добавлено через 1 минуту и 14 секунд
вот тут поподробнее. |
| Автор: chubaka 30.4.2009, 19:09 | ||||||||||||||||||
| Вообщем опишу ситуация по другому. Вот специально приготовил пример. Есть такая программа:
Она не делает ничего, создает 5 потоков и потом их завершает. Тесты проходят на UBUNTU. Между запуском каждого потока пауза в 5 секунд. И так, компилируем и запускаем программу:
Смотрим статистику по использованной памяти. Сразу после старта программа создает первый поток.
Проходит 5 секунд, запускается второй поток:
Проходит 5 секунд, запускается третий поток:
Проходит 5 секунд, запускается четвертый поток:
Проходит 5 секунд, запускается пятый поток:
После того как все потоки завершились:
Вопросы: 1. Почему пямяти не стало столько, сколько было первоначально ? 2. Что мне делать, если программа на протяжении своей жизни будет создавать десятки тысяч потоков и их завершать. Естественно не одновременно, а постепенно по 2-3 сразу. Ведь пямяти каждый раз все больше и больше уходит. |
| Автор: MAKCim 30.4.2009, 21:30 | ||
ничего не надо делать, это не твоя забота |
| Автор: chubaka 30.4.2009, 21:55 |
| понял, спасибо. но всеравно немного странно звучит, "не моя забота" нужна стабильность софта, а памяти кушает и кушает. |
| Автор: chubaka 30.4.2009, 22:17 | ||
Вообщем помоему проблема решилась. На более большом количество потоков видно, что память освобождается. Теперь использую отсоедененные сокеты.
Спасибо большое всем ! |