Article View: pl.comp.lang.pascal
Article #92527Re: [Lazarus] TCurl zawiesza się. Pomocy! Proszę!
From: Terrmit
Date: Wed, 02 Apr 2008 23:37
Date: Wed, 02 Apr 2008 23:37
38 lines
2712 bytes
2712 bytes
Terrmit pisze:
> Terrmit pisze:
>> Tutaj tworzony jest wątek CurlThreadExecute
>>> pthread_mutex_init({$IFDEF FPC}@{$ENDIF}fMutex, nil);
>>> pthread_create({$IFDEF FPC}@{$ENDIF}fThread, nil, {$IFDEF
>>> FPC}@{$ENDIF}CurlThreadExecute, self);
>
> Kolejna wskazówka.
> Po 300 wywołaniach (ale czasami po 301, a nawet po 302)
> funkcja pthread_create zwraca kod 12 (ENOMEM), czyli
> brak pamięci. Czyżby to oznaczało, że wątki nie są kończone
> i zjadają pamięć?
>
Znalazłem artykuł Mirosława Jedynaka o wątkach w Linuksie:
http://www.g2inf.one.pl/referaty/watki-referat.pdf
<cytat>
W momencie, gdy watek w stanie umożliwiającym dołączenie kończy
działanie jego zasoby (deskryptor wątku i stos) *nie są zwalniane*
dopóki inny watek nie wykona na nim pthread_join. Dlatego
pthread_join powinien być wykonany dla każdego nieodłączonego wątku.
</cytat>
I rzeczywiście. Wstawiłem tą funkcję na końcu procedury, gdzie
wątek nie powinien się już wykonywać. Pomogło!
Ale akapit wcześniej autor napisał, że:
<cytat>
Watek, do którego dołączamy musi być w stanie umożliwiającym dołączanie
(nie może być odłączony przez wywołanie pthread_detach [...]
</cytat>
Czyli chyba lepiej, gdy zaraz po utworzeniu wątku przez pthread_create,
zrobi się go wątkiem odłączonym. Wtedy po zakończeniu wątku jego
deskryptor i stos powinny być zwolnione.
pthread_detach(fThread);
Wydaje się, że to powinno pomóc. Chyba, że jest jeszcze inne lepsze
rozwiązanie tego problemu?
Sławek
Technical Details
Message-ID:
<ft15ov$hbt$1@nemesis.news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!news.tpi.pl!not-for-mailReferences:
<fssr03$k01$1@atlantis.news.neostrada.pl> <fst2ug$gd3$1@nemesis.news.neostrada.pl> <fstdsc$lcb$1@atlantis.news.neostrada.pl> <ft0tt2$lih$1@atlantis.news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!news.tpi.pl!not-for-mail From: Terrmit <terrmitv@poczta.onet.pl> Newsgroups: pl.comp.lang.pascal Subject: Re: [Lazarus] TCurl zawiesza się. Pomocy! Proszę! Date: Thu, 03 Apr 2008 01:37:50 +0200 Organization: TP - http://www.tp.pl/ Lines: 38 Message-ID: <ft15ov$hbt$1@nemesis.news.neostrada.pl> References: <fssr03$k01$1@atlantis.news.neostrada.pl> <fst2ug$gd3$1@nemesis.news.neostrada.pl> <fstdsc$lcb$1@atlantis.news.neostrada.pl> <ft0tt2$lih$1@atlantis.news.neostrada.pl> NNTP-Posting-Host: fge166.internetdsl.tpnet.pl Mime-Version: 1.0 X-Trace: nemesis.news.neostrada.pl 1207179871 17789 83.13.160.166 (2 Apr 2008 23:44:31 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Wed, 2 Apr 2008 23:44:31 +0000 (UTC) User-Agent: Thunderbird 2.0.0.12 (X11/20080226) In-Reply-To: <ft0tt2$lih$1@atlantis.news.neostrada.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit