ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-Fork/Fork.pm
(Generate patch)

Comparing AnyEvent-Fork/Fork.pm (file contents):
Revision 1.26 by root, Sat Apr 6 08:58:51 2013 UTC vs.
Revision 1.31 by root, Sat Apr 6 09:29:26 2013 UTC

152 152
153 # now $master_filehandle is connected to the 153 # now $master_filehandle is connected to the
154 # $slave_filehandle in the new process. 154 # $slave_filehandle in the new process.
155 }); 155 });
156 156
157 # MyModule::worker might look like this 157MyModule might look like this:
158
159 package MyModule;
160
158 sub MyModule::worker { 161 sub worker {
159 my ($slave_filehandle) = @_; 162 my ($slave_filehandle) = @_;
160 163
161 # now $slave_filehandle is connected to the $master_filehandle 164 # now $slave_filehandle is connected to the $master_filehandle
162 # in the original prorcess. have fun! 165 # in the original prorcess. have fun!
163 } 166 }
182 } 185 }
183 186
184 # now do other things - maybe use the filehandle provided by run 187 # now do other things - maybe use the filehandle provided by run
185 # to wait for the processes to die. or whatever. 188 # to wait for the processes to die. or whatever.
186 189
187 # My::Server::run might look like this 190My::Server might look like this:
188 sub My::Server::run { 191
192 package My::Server;
193
194 sub run {
189 my ($slave, $listener, $id) = @_; 195 my ($slave, $listener, $id) = @_;
190 196
191 close $slave; # we do not use the socket, so close it to save resources 197 close $slave; # we do not use the socket, so close it to save resources
192 198
193 # we could go ballistic and use e.g. AnyEvent here, or IO::AIO, 199 # we could go ballistic and use e.g. AnyEvent here, or IO::AIO,
309 my ($fork_fh) = @_; 315 my ($fork_fh) = @_;
310 }); 316 });
311 317
312=back 318=back
313 319
314=head1 FUNCTIONS 320=head1 THE C<AnyEvent::Fork> CLASS
321
322This module exports nothing, and only implements a single class -
323C<AnyEvent::Fork>.
324
325There are two class constructors that both create new processes - C<new>
326and C<new_exec>. The C<fork> method creates a new process by forking an
327existing one and could be considered a third constructor.
328
329Most of the remaining methods deal with preparing the new process, by
330loading code, evaluating code and sending data to the new process. They
331usually return the process object, so you can chain method calls.
332
333If a process object is destroyed before calling its C<run> method, then
334the process simply exits. After C<run> is called, all responsibility is
335passed to the specified function.
336
337As long as there is any outstanding work to be done, process objects
338resist being destroyed, so there is no reason to store them unless you
339need them later - configure and forget works just fine.
315 340
316=over 4 341=over 4
317 342
318=cut 343=cut
319 344
329use IO::FDPass; 354use IO::FDPass;
330 355
331our $VERSION = 0.5; 356our $VERSION = 0.5;
332 357
333our $PERL; # the path to the perl interpreter, deduces with various forms of magic 358our $PERL; # the path to the perl interpreter, deduces with various forms of magic
334
335=item my $pool = new AnyEvent::Fork key => value...
336
337Create a new process pool. The following named parameters are supported:
338 359
339=over 4 360=over 4
340 361
341=back 362=back
342 363
438Create a new "empty" perl interpreter process and returns its process 459Create a new "empty" perl interpreter process and returns its process
439object for further manipulation. 460object for further manipulation.
440 461
441The new process is forked from a template process that is kept around 462The new process is forked from a template process that is kept around
442for this purpose. When it doesn't exist yet, it is created by a call to 463for this purpose. When it doesn't exist yet, it is created by a call to
443C<new_exec> and kept around for future calls. 464C<new_exec> first and then stays around for future calls.
444
445When the process object is destroyed, it will release the file handle
446that connects it with the new process. When the new process has not yet
447called C<run>, then the process will exit. Otherwise, what happens depends
448entirely on the code that is executed.
449 465
450=cut 466=cut
451 467
452sub new { 468sub new {
453 my $class = shift; 469 my $class = shift;
550Normally, only processes created via C<< AnyEvent::Fork->new_exec >> and 566Normally, only processes created via C<< AnyEvent::Fork->new_exec >> and
551L<AnyEvent::Fork::Template> are direct children, and you are responsible 567L<AnyEvent::Fork::Template> are direct children, and you are responsible
552to clean up their zombies when they die. 568to clean up their zombies when they die.
553 569
554All other processes are not direct children, and will be cleaned up by 570All other processes are not direct children, and will be cleaned up by
555AnyEvent::Fork. 571AnyEvent::Fork itself.
556 572
557=cut 573=cut
558 574
559sub pid { 575sub pid {
560 $_[0][0] 576 $_[0][0]

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines