Threads x procesy
Karel Zak
zakkr na zf.jcu.cz
Čtvrtek Říjen 11 11:54:56 CEST 2001
On Thu, Oct 11, 2001 at 11:21:53AM +0200, martin.kula na deltaes.cz wrote:
> Zdravim
>
> Resim nasledujici problem:
> Program na hw s omezenou pameti a bez swapu (bez hd), ktery navaze TCP
> spojeni s 1 - mnoha zarizenimi a tyto spojeni drzi permanentne po dobu
> hodin, dnu, tydnu ..... pripadne data tekouci z/k zarizenim jsou
> ukladany/cteny do/ze shared memory.
> Mozne reseni je obsluha sekvencne jednim procesem nebo soucasna obsluha
> ....
> Pro druhy pripad mam nasledujici dilema:
> pozit fork a 1-mnoho stejnych procesu nebo threads.
> Sam jsem si jiz napsal sve pro i proti ale rad bych porovnal sve nazory s
> okolim.
- u forku stabilita muze byt vetsi protoze pri chybe jednoho potomka
nemusi nutne pojit cela aplikace.
- u threadu muzete usetrit pamet pokud vam zadani aplikace dovoluje
ji sdilet (narozdil od forku kde se muzete nanejvys spolehnout jen
na copy-on-write)
- u threadu se snadneji pracuje se sdilenou pameti nez v pripade fork
reseni kde budete muset pouzivat napr. IPC (nakonec to muze i
ovlivnit stabilitu:-)
Pokud vam nejaka prodleva mezi pozadavkem klienta a jeho vyrizenim
nevadi (coz je caste) tak mozna, ze reseni obsluhovat to jednim
procesem nemusi byt nutne spatne. Tedy lepe reseni pomoci dvou
procesu (threadu). Kdy jeden prijma pozadavky a dava do fronty a
dalsi je s te fronty cte a vyrizuje. Pokud je zrejme ze u toho
vyrizovani bude nejake cekani (napr. na disk nebo sit apod.) nebo
mate SMP stroj tak tech threadu "vyrizovatelu" muze byt i vice. Pokud
jsou mezi pozadavky klienta nejake prodlevy tak si myslim, ze casto
pouzivany model kdy pocet klientu = pocet threadu je zbytecnost.
Protoze po dobu co klient nic od serveru nechce tak ten thread klidne
muze obslouzit neco jineho. Kazdy thread preci jen nejakou tu pamet sezere.
> - zatizeni CPU
> - slozitost programovani
Budete muset vyresit zamykani te sdilene pameti (a to u jakehokoliv
reseni), tam bych videl to uzke hrdlo, ktere snadno da napsat blbe
a ktere se treba projevi az u vetsiho poctu konkurujicich si klientu.
Karel
--
Karel Zak <zakkr na zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/
C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
Další informace o konferenci Linux