Ladeni multithreadove aplikace
Stanislav Meduna
stano na trillian.eunet.sk
Pátek Leden 21 08:50:57 CET 2000
On 20 Jan 2000 22:54:07 +0100, Michal Krause wrote:
: Jde o implementaci toho jednouceloveho HTTP serveru, o kterem jsme se
: tady bavili asi pred mesicem, kdyz jsme probirali moznosti paralelizace
: Navrcholu, takze princip aplikace je nasledujici: hlavni thread ceka na
: pozadavky (accept()) a pak otevereny socket predava pracovnim threadum,
: ktere ctou, parsuji a vyrizuji requesty.
Otazka c. 1 - ma multithreading zmysel? Nestacila by jedna
slucka a prislusny stavovy automat?
MT ma v tomto pripade zmysel ked:
- ide o proces, ktory tvori vacsinu CPU zataze daneho stroja
- alebo trva vybavovanie niektorych poziadaviek dlho a ine
zatial musia byt obsluhovane
Ak je spracovanie kratke, s trochou smoly sa moze stat,
ze je odovzdanie prace inemu threadu drahsie ako
spracovanie v single-threaded aplikacii :-(
: Problem je, ze pracovni thread (zatim to testuju s jednim) mi ze zatim
: neznamych duvodu duvodu kolabuje. Jelikoz ani s pomoci ladicich vypisu
: jsem nebyl schopen najit pricinu,
Ladiace vypisy su v MT aplikacii na houby - bud je vypis
taky zmatok, ze sa v nom neda vyznat, alebo ovplyvnia
beh threadov tak, ze sa aplikacia sprava uplne inak
ako bez nich. Vitaj v svete multithreadingu :-)
: Takze jsem se chtel zeptat zkusenejsich, jestli lze z vyse uvedeneho
: zjistit mozna pricina, pripadne jak postupovat, abych chybu nasel.
99.9% zahadnych problemov v MT aplikaciach je zabudnuta
alebo chybna synchronizacia medzi threadmi. A na to funguje
zobrat si ceruzku a papier, nakreslit funkcie spolu s datami,
ktore spracovavaju, a kde sa tie data prekryvaju, hladat
nejaku moznost, ako do nich mozu vliezt dva thready
naraz.
Mimochodom, urcite su vsetky subory kompilovane s -D_REENTRANT? :-)
Zdravi
--
Stano
Další informace o konferenci Linux