![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
chubaka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Здравствуйте.
Есть программа, которая на протяжении своей жизни постоянно создает и удаляет потоки. В идеале она не должна выключаться совсем. Создаю потоки pthread_create, завершаю pthread_join. Смотрю сколько памяти занимает программа - после каждого освобождения потока она не освобождается. Подскажите пожалуйста как правильно создавать и завершать потоки. И еще. Нужно ли в обработчике потока, в самой функции которая работает как поток, в конце выполнять какието действия по освобождению ? Динамической памяти функция не создает. |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
я чего-то не понял? с каких пор pthread_join завершает поток? Добавлено через 1 минуту и 14 секунд
вот тут поподробнее. Это сообщение отредактировал(а) azesmcar - 30.4.2009, 13:08 |
||||
|
|||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
это нормально libc кэширует память, выделяемую под стеки потоков -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
chubaka |
|
||||||||||||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Вообщем опишу ситуация по другому.
Вот специально приготовил пример. Есть такая программа:
Она не делает ничего, создает 5 потоков и потом их завершает. Тесты проходят на UBUNTU. Между запуском каждого потока пауза в 5 секунд. И так, компилируем и запускаем программу:
Смотрим статистику по использованной памяти. Сразу после старта программа создает первый поток.
Проходит 5 секунд, запускается второй поток:
Проходит 5 секунд, запускается третий поток:
Проходит 5 секунд, запускается четвертый поток:
Проходит 5 секунд, запускается пятый поток:
После того как все потоки завершились:
Вопросы: 1. Почему пямяти не стало столько, сколько было первоначально ? 2. Что мне делать, если программа на протяжении своей жизни будет создавать десятки тысяч потоков и их завершать. Естественно не одновременно, а постепенно по 2-3 сразу. Ведь пямяти каждый раз все больше и больше уходит. |
||||||||||||||||||
|
|||||||||||||||||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
ничего не надо делать, это не твоя забота -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
chubaka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
понял, спасибо. но всеравно немного странно звучит, "не моя забота"
![]() нужна стабильность софта, а памяти кушает и кушает. |
|||
|
||||
chubaka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Вообщем помоему проблема решилась. На более большом количество потоков видно, что память освобождается. Теперь использую отсоедененные сокеты.
Спасибо большое всем ! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |