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