Привет, ЛОР!
Написал некую программу на C, в ней достаточно активно используются треды. Жизнь треда начинается через pthread_create и заканчивается через pthread_cancel. Через pthread_attr функции pthread_create сообщается тип треда (JOINABLE или DETACHED). Вся динамически выделенная память освобождается в функции, назначенной треду через pthread_cleanup_push/pop.
После прогона программы под Valgrind выяснилось следующее:
* Если тред создан как JOINABLE (в этом случае после cancel вызывается join), то остаются possibly lost куски памяти, по одному на каждый созданный тред.
* Если тред создан как DETACHED (в этом случае после create дополнительно вызывается detach) вся память освобождается корректно.
Если верить man-у, то и join и detach освобождают все ресурсы, выделенные при создании треда.
В интернетах эту тему обсуждали в 2006-8 годах, некоторые предлагали вызывать detach после join и наоборот, но это попахивает бредом. Единого мнения я не нашел. Некоторые, кстати, считают, что на подобные утечки можно просто забить - дескать, все так и должно работать. Так ли это?
P.S.
Все это безобразие происходит под Ubuntu 9.10 x86
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от dmitry_vk

Ответ на:
комментарий
от frey


Ответ на:
комментарий
от ifred

Ответ на:
комментарий
от nanoo_linux

Ответ на:
комментарий
от nanoo_linux

Ответ на:
комментарий
от ifred

Ответ на:
комментарий
от nanoo_linux

Ответ на:
комментарий
от ifred
Ответ на:
комментарий
от nanoo_linux


Ответ на:
комментарий
от ifred
Ответ на:
комментарий
от idle

Ответ на:
комментарий
от ifred
Ответ на:
комментарий
от idle


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум pthread: утечка памяти или нормальная работа? (2010)
- Форум [pthread] join all pthreads (2006)
- Форум valgrind and pthread (2005)
- Форум valgrind VS cmpxchg8b (2004)
- Форум inet_ntoa vs pthread (2005)
- Форум OpenMP vs. Pthreads vs C1X? (2010)
- Форум Process detaching (2005)
- Форум valgrind (2010)
- Форум valgrind (2008)
- Новости Valgrind 3.7.0 (2011)
