|
Тема |
Re: izprashtane na danni kum multiple forked socke [re: azo] |
|
Автор | pencho666 (Нерегистриран) | |
Публикувано | 30.10.03 14:26 |
|
|
Ima mnogo nachini tova da se napravi. Ot nestabilnite i zaviseshti ot operacionnata sistema "podeleni" failovi descriptori, do non-blocking IO i cikli.
Mnogo lesno mojesh da napravish slednoto neshto:
Da otvariash nov Socket v promenliva ot masiv push(@dcss,IO::Socket::INET......), da go markirash kato $dcss[-1]->blocking(0); i da si vartish cikli bez fork. Kakto i za chetene. Niamash blokirane, niamash izchakvane.
Drug mehanizam e da imash proces koito da ima FD-ta mejdi podprocesite (naprimer da ima otvoreni PIPES), i kogato iskash da izpratish neshto na vsichki pristignalo pri child 1, to go kopira na PIPE-to na komunikacionniat proces, a toi go razmnojava kam vsichki. Tova shte iziskva s poll ili select ot vreme na vreme da gledash po pipe-to dali ne e pristignala informacia (forma na nonblocking IO).
Treti nachin e da otvariash zatvariash tcp sesiite nanovo. Mojesh da imash shared memory mejdu procesite kadeto da kopirash informaciata, i s kill (niakakav specialen signal) da izvestish vsichki childs da go prochetat ot tam.
Moje mnogo neshta, kolkoto fantazia imash. No non-blocking IO-to e nai prosto :)
|
| |
|
|
|