|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Yury Kopyl 2:5020/400 04 Aug 2004 18:03:56 To : Konstantin Tokar Subject : Re: IPC::Shareable -------------------------------------------------------------------------------- Konstantin Tokar -> "Re: IPC::Shareable" : KT> Есть ещё http://search.cpan.org/~shay/Win32-SharedFileOpen-3.18/ KT> Есть другой простой способ - открываешь отображаемый файл двумя KT> процессами, заботишься о блокировках, и всё. Если надо шарить память только между родителем и потомками, то поможет слежующее ---- огрызок старого запылившегося файла --- use strict; use Data::Dumper; use Carp; use IO::Handle; my $THREAD_COUNT=4; print "main started\n"; $|=1; my @pids; foreach my $i (1..$THREAD_COUNT){ $pids[$i]->{READER}=IO::Handle->new; $pids[$i]->{WRITER}=IO::Handle->new; $pids[$i]->{READER}->autoflush(1); $pids[$i]->{WRITER}->autoflush(1); pipe ($pids[$i]->{READER},$pids[$i]->{WRITER}); my $pid=fork; if ($pid){ $pids[$i]->{WRITER}->close; $pids[$i]->{pid}=$pid; } else { croak "$!" unless (defined($pid)); $pids[$i]->{READER}->close; my $handle=$pids[$i]->{WRITER}; start_thread(); #thread body $pids[$i]->{WRITER}->close; exit; }; }; foreach my $i (1..$THREAD_COUNT){ my $handler=$pids[$i]->{READER}; while (my $str=<$handler>){ read smth... }; $pids[$i]->{READER}->close; waitpid $pids[$i]->{pid},0; }; print "main finished\n"; Yury Kopyl aka hrg | http://id.totem.ru | "Если ты плюнешь на коллектив - коллектив утрется, но если коллектив плюнет на тебя - ты утонешь" (С)Баралгин --- ifmail v.2.15dev5.3 * Origin: IAC Samara-Internet, Ltd. (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/10277bba1c205.html, оценка из 5, голосов 10
|