Jak zjistit, ze program je threadovany

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Sobota Říjen 13 02:47:45 CEST 2007


On Mon, 8 Oct 2007, Petr Janda wrote:

> Mam tu program, ktery ma v sobe memory leak, mam zdrojaky, znam
> pravdepodobne i misto, kde se pamet alokuje, ale nejsem si jist, kde ji
> mohu opet uvolnit.

To je tak, když se nepoužívá garbage collector.

> Napadlo me reseni - proste vytvorim statickou promennou a nebudu pamet
> opakovane alokovat - mohlo by to fungovat, ale s thready si to rozumet
> nebude.

Pomineme-li problémy s multithreadingem, tak to podle mne obsahuje 
implicitní předpoklad, že v okamžiku, kdy budete chtít jednou alokovaný 
prostor recyklovat, už ta stará data nikdo nepotřebuje. Což mi připadá ve 
světle výše uvedeného tvrzení, že nevíte, kdy se smí paměť uvolnit, jako 
poněkud nebezpečný předpoklad.

> No a nejak nejsem schopen zjistit, jestli se ta aplikace threaduje, nebo
> ne.

Posaďte breakpoint na pthread_create() (a případně pro sichr i clone()) a 
uvidíte. Nebo prohledejte zdrojáky na výskyt "pthread_".

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."





Další informace o konferenci Linux