Ladeni multithreadove aplikace

Petr Novotny Petr.Novotny na antek.cz
Neděle Leden 23 17:02:37 CET 2000


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 23 Jan 00, at 15:46, Michal Krause wrote:
> Ja bych to klidne napsal s forkovanim, protoze s tim mam rozhodne
> vetsi zkusenosti, ale problem je, ze potrebuju sdilet konexi na MySQL
> a to je v threadech podstatne jednodussi.

Asi tak stejne slozite pres fork() jako psat do pojmenovane roury, a 
jeden demonek rouru cte, spravne serializuje zapisy, a posila to do 
te konekce. :-) Tedy jednoduche... Jak bych to jen rekl...

No ale viz nize.

> A dalsi vec, kterou jsem
> nebyl schopen vyresit je, jak si predat mezi procesy otevreny socket,
> coz povazuji za nejefektivnejsi zpusob (nezda se mi optimalni data ze
> socketu i cist a predavat je zkrz rouru pracovnimu procesu).

Nedela nahodou Apache presne tohle? (Jako ze rodic httpd 
prevezme konekci, a preda ji nejakemu bezicimu diteti.) Pres fcntl 
je mozno filedeskriptoru zmenit vlastnika - a mel jsem pocit, ze 
cisla deskriptoru jsou per-system, ne per-proces. Takze by melo 
stacit predani jednoho cisla - ale dost mozna se pletu.


[*] V multithreadove aplikaci se sdilenou (single-threadovou) 
konekci na databazi tu konekci obalim mutexem, jeden thread 
pise, ostatni cekaji na mutex. V multi-forkove :-) aplikaci musim 
delat totez, jedina otazka vlastne je, jak se k te konekci dostat.

Takze udelam treba tohle: "Startovni" rodic spusti nejakeho 
"demona konekce" a ma k nemu otevreny tri anonymni roury - 
zapisovaci a (pro me za me) dve komunikacni. Tyto roury tez 
fdup2()uje vsem svym potomkum.

Potomek, kdyz chce komunikovat s databazi, zapise do 
komunikacni roury "ted chci mluvit ja", pocka (select) na druhe 
komunikacni roure, az se dozvi "muzes", a nahuci data do 
zapisovaci roury.


Je to mozna tezkopadne (pro zacatek), ale tohle by prece bezet 
mohlo, ne?

-----BEGIN PGP SIGNATURE-----
Version: PGP 6.0.2 -- QDPGP 2.60 
Comment: http://community.wow.net/grt/qdpgp.html

iQA/AwUBOIsmHFMwP8g7qbw/EQI+JQCg9b0p6t0/MpNAlK1RPdqJu49h9lYAoJup
vQg3uhYFd8FQMPR8f9cXQlPZ
=2M1I
-----END PGP SIGNATURE-----
--
Petr Novotny, ANTEK CS
Petr.Novotny na antek.cz
http://www.antek.cz
PGP key ID: 0x3BA9BC3F
-- Don't you know there ain't no devil there's just God when he's drunk.
                                                             [Tom Waits]


Další informace o konferenci Linux