🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.pascal
Article #92526

Re: [Lazarus] TCurl zawiesza się. Pomocy! Proszę!

#92526
From: Terrmit
Date: Wed, 02 Apr 2008 23:34
38 lines
2706 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: <ft15i1$gsl$1@nemesis.news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!news.tpi.pl!not-for-mail
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>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.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:34:10 +0200
Organization: TP - http://www.tp.pl/
Lines: 38
Message-ID: <ft15i1$gsl$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 1207179649 17301 83.13.160.166 (2 Apr 2008 23:40:49 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Wed, 2 Apr 2008 23:40:49 +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