Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 4.678 pregleda

Najnovija ↓

Kylix3/RH9: thread-ovi ne umiru 19.07.2004. u 22:08 · pre 271 mesec #1
Dakle, napravim ja tako thread u Kylix3 na RedHat9, u execute stoji samo sleep od par sekundi (ili bilo sta drugo) i taj thread ostaje zauvek prisutan kao "zombie" thread. StartSuspended ne utice na problem. Thread ne trosi resurse, ali tu je. Kill ne uspeva da ga ubije, bez poruke o gresci. Ima li resenja za ovaj problem?
Re: Kylix3/RH9: thread-ovi ne umiru 20.07.2004. u 14:25 · pre 271 mesec #2
E, koliko su slicni Kylix TThread i Delphi-jev TThread?
Ako jesu slicni, onda treba da u constructor-u 'tvog' thread-a postavis property FreeOnTerminate na true; na taj nacin, garantovano 'umire' kad izadje iz Execute metode.
Pozdrav

Rajko
Re: Kylix3/RH9: thread-ovi ne umiru 20.07.2004. u 20:45 · pre 271 mesec #3
Eh, malopre sam shvatio da se problem pojavljuje samo kada program pokrenem iz Kylix-a. Kada ga startujem nezavisno nema tog problema, tako da mi nije vazno zasto se to desava.

Inace, hvala na predlogu, ali izgleda da FreeOnTerminate ne utice na problem.
Re: Kylix3/RH9: thread-ovi ne umiru 22.07.2004. u 09:21 · pre 271 mesec #4
Aj stavi breakpoint na taj Sleep() u Execute metodi, cisto da se uveris da li uopste thread stize dotle. Lici mi da si kreirao thread sa Suspended (parametar u constructor-u), a onda imas upravo 'zombi' thread.
Ukoliko jesi kreirao suspendovane thread-ove, onda samo pozoves recimo MyThread.Resume i to je to.

Rajko
Re: Kylix3/RH9: thread-ovi ne umiru 22.07.2004. u 18:54 · pre 271 mesec #5
Ma ne, tredovi odrade svoj posao lepo ali se ne uklanjaju sa liste aktivnih samo ako je program startovan iz Kylix-a inače kulturno uginu tako da me to uopšte ne brine jer se program ionako kod korisnika ne pokreće iz Kylix-a već, naravno, samostalno.
Re: Kylix3/RH9: thread-ovi ne umiru 26.07.2004. u 09:03 · pre 271 mesec #6
'Kill ne uspeva da ga ubije, bez poruke o gresci.'

Sta ti ovo znaci? Ima greska ili nema? Nemoj tako olako da prihvatas stanje stvari. Definitivno ovo sto si naveo nije regularno. Znam o cemu pricam; i meni se ranije desavalo da thread aplikacije ne rade iz IDE-a, a iz dektopa rade (i obratno). I uvek se ispostavljalo da je u pitanju greska u design-u (sinhronizaciji thread-ova).
A zasto se to desava? Zato sto timing (nemam bolji izraz) thread-ova ne tece isto, u zavisnosti kako je startovana aplikacija. Posledica toga je da se u jednom trenutku aplikacija obrati thread-u koji je vec 'mrtav' (prazna referenca), ili se thread obrati necemu sto je u tom trenutku prazna referenca. Razmisli o ovome.
Pozdrav

Rajko
Re: Kylix3/RH9: thread-ovi ne umiru 26.07.2004. u 17:44 · pre 271 mesec #7
Auh, sada izgleda ovaj problem tebe nervira mnooooogo vise nego mene :)

Prvo, verovatno nisam bio dovoljno jasan jer spominjes sinhronizaciju i moguce razloge zasto tredovi ne rade kako treba - kod mene svi tredovi, u oba slucaja (IDE/standalone), provereno rade kako treba i nije problem u sinhronizaciji jer kao sto rekoh probao sam i sa tredom koji samo odradi sleep i nema ama bas nikakvu komunikaciju sa drugim tredovima. Imam ranijeg iskustva sa tredovima na Windows-u i znam kakve zavrzlame mogu da nastanu kada nesto nije dobro osmisljeno.

Inace, "kill ne uspeva da ga ubije bez poruke o gresci" znaci da kada otkucam

kill thread_pid

ne dobijam nikakvu poruku o gresci, ali na spisku tredova ovaj i dalje stoji. U stvari, nisam siguran da kill uopste moze da ubija pojedinacne tredove, samo sam pretpostavio da moze kad vec imaju pid isto kao i procesi. A pid sam saznao pomocu ps tj. pstree programa.

Ja sam ti zahvalan na odgovorima i ulozenom trudu i vremenu, ali ovaj problem je zaista nebitan zato sto a) ne utice na rad programa i b) kod korisnika se ne ispoljava.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme