Portál AbcLinuxu, 30. dubna 2024 09:17


Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
Jardík avatar 26.8.2010 12:51 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny
Odpovědět | Sbalit | Link | Blokovat | Admin
A je to tu zase. Fakt nechápu, co je vede k použití typu long pro počítání počtu vláken... navíc je to o ničem. Dávat bacha na pthread_join je nedostatečné. Je třeba taky dávat bacha na leaky spojené s pamětí nealokované na stacku v kombinaci např. s pthread_exit, pthread_cancel, pthread_kill ...
Věřím v jednoho Boha.
26.8.2010 18:01 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny

Jinými slovy, je prostě dobré vědět o pthread_cleanup_push a pthread_cleanup_pop.

Luboš Doležel (Doli) avatar 26.8.2010 18:11 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny
To je hezký. Že thready používám na Linuxu 6 let, tak jsem tyhle funkce neznal, protože se na ně všude kašle, a to jsem toho v začátcích načetl :-(
Jardík avatar 26.8.2010 19:28 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny
tyhle funkce neznal
Pozor, s tímhle jsem měl problémy, někde to tu asi bude zahrabaný v dotazech - můžou to být makra a v GCC na linuxu@x86-64 to opravdu makra jsou.
Věřím v jednoho Boha.
Jardík avatar 26.8.2010 19:29 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny
tady to je.
Věřím v jednoho Boha.
26.8.2010 19:37 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny

No jasně, že jsou to makra. Právě proto, aby někdo nedělal takové prasečinky jako podmíněné pthread_cleanup_{push,pop} a hlavně aby to nezapomněl spárovat. Vždy se dá programovat tak, aby ta dvě volání byla spárovaná.

26.8.2010 19:33 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny

Vlastně to nejsou funkce, ale (konkrétně na Linuxu) makra. To první končí { a to druhé začíná }. Aby to člověk nezapomněl spárovat.

Při použití podmínkových proměnných ve spojení s thread cancellation je tohle naprostá nezbytnost, protože zrušení vlákna při čekání na podmínkovou proměnnou vždy nakonec nechá mutex zamčený. A někdo ho musí odemknout. (V man pthread_cond_wait je o tom celý odstavec.)

Luboš Doležel (Doli) avatar 26.8.2010 21:58 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny
Teď na to koukám. Teď už se mi to nezdá tak zajímavý.
28.8.2010 05:47 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny

Možná to není zajímavé, ale jsou případy, kdy je to nezbytné. Típnout vlákno (pthread_cancel()), které čeká na podmínkové proměnné, prostě nelze nijak jinak než za asistence pthread_cleanup_*(). Jinak ten příslušný mutex už zůstane zamčený a není žádný korektní způsob, jak ho znova odemknout.

26.8.2010 19:30 the já
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny
Tím longem asi chtěli naznačit, že mají rychlé počítače :-)
26.8.2010 19:34 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny

Longem prostě vyjadřuji, že mám něco dlouhého a jsem na to hrdý. :-D

Aleš Janda avatar 26.8.2010 18:54 Aleš Janda | skóre: 23 | blog: kýblův blog | Praha
Rozbalit Rozbalit vše Re: Úniky paměti při práci s POSIXovými vlákny
Odpovědět | Sbalit | Link | Blokovat | Admin
Univerzální rada je - spustit to pod valgrindem, veškeré leaky uvedené v článku odchytí.
Zahrajte si trojšachy přes internet :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.