| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | =head1 NAME | 
| 2 |  |  |  |  |  |  |  | 
| 3 |  |  |  |  |  |  | AnyEvent::Fork::Template - generate a template process from the main program | 
| 4 |  |  |  |  |  |  |  | 
| 5 |  |  |  |  |  |  | =head1 SYNOPSIS | 
| 6 |  |  |  |  |  |  |  | 
| 7 |  |  |  |  |  |  | # only usable in the main program | 
| 8 |  |  |  |  |  |  |  | 
| 9 |  |  |  |  |  |  | # preload some harmless modules (just examples) | 
| 10 |  |  |  |  |  |  | use Other::Module; | 
| 11 |  |  |  |  |  |  | use Some::Harmless::Module; | 
| 12 |  |  |  |  |  |  | use My::Worker::Module; | 
| 13 |  |  |  |  |  |  |  | 
| 14 |  |  |  |  |  |  | # now fork and keep the template | 
| 15 |  |  |  |  |  |  | use AnyEvent::Fork::Template; | 
| 16 |  |  |  |  |  |  |  | 
| 17 |  |  |  |  |  |  | # now do less harmless stuff (just examples) | 
| 18 |  |  |  |  |  |  | use Gtk2 -init; | 
| 19 |  |  |  |  |  |  | my $w = AE::io ...; | 
| 20 |  |  |  |  |  |  |  | 
| 21 |  |  |  |  |  |  | # and finally, use the template to run some workers | 
| 22 |  |  |  |  |  |  | $AnyEvent::Fork::Template->fork->run ("My::Worker::Module::run_worker", sub { ... }); | 
| 23 |  |  |  |  |  |  |  | 
| 24 |  |  |  |  |  |  | =head1 DESCRIPTION | 
| 25 |  |  |  |  |  |  |  | 
| 26 |  |  |  |  |  |  | By default, this module forks when it is used the first time and stores | 
| 27 |  |  |  |  |  |  | the resulting L object in the C<$AnyEvent::Fork::Template> | 
| 28 |  |  |  |  |  |  | variable (mnemonic: same name as the module itself). | 
| 29 |  |  |  |  |  |  |  | 
| 30 |  |  |  |  |  |  | It must only be used in the main program, and only once. Other than that, | 
| 31 |  |  |  |  |  |  | the only requirement is that you can handle the results of a fork at that | 
| 32 |  |  |  |  |  |  | time, i.e., when you use this module after AnyEvent has been initialised, | 
| 33 |  |  |  |  |  |  | or use it after you opened some window with Gtk2 or Tk for example then | 
| 34 |  |  |  |  |  |  | then you can't easily use these modules in the forked process. Choosing | 
| 35 |  |  |  |  |  |  | the place to use this module wisely is key. | 
| 36 |  |  |  |  |  |  |  | 
| 37 |  |  |  |  |  |  | There is never a need for this module - you can always create a new empty | 
| 38 |  |  |  |  |  |  | process and loading the modules you need into it. | 
| 39 |  |  |  |  |  |  |  | 
| 40 |  |  |  |  |  |  | =cut | 
| 41 |  |  |  |  |  |  |  | 
| 42 |  |  |  |  |  |  | package AnyEvent::Fork::Template; | 
| 43 |  |  |  |  |  |  |  | 
| 44 | 2 |  |  | 2 |  | 2278 | use AnyEvent::Fork (); | 
|  | 2 |  |  |  |  | 2 |  | 
|  | 2 |  |  |  |  | 86 |  | 
| 45 |  |  |  |  |  |  |  | 
| 46 |  |  |  |  |  |  | # this does not work on win32, due to the atrociously bad fake perl fork | 
| 47 |  |  |  |  |  |  | die "AnyEvent::Fork::Template does not work on WIN32 due to bugs in perl\n" | 
| 48 |  |  |  |  |  |  | if $^O eq "MSWin32"; | 
| 49 |  |  |  |  |  |  |  | 
| 50 |  |  |  |  |  |  | $AnyEvent::Fork::Template = AnyEvent::Fork->_new_fork ("AnyEvent::Fork::Template"); | 
| 51 |  |  |  |  |  |  |  | 
| 52 |  |  |  |  |  |  | =head1 AUTHOR | 
| 53 |  |  |  |  |  |  |  | 
| 54 |  |  |  |  |  |  | Marc Lehmann | 
| 55 |  |  |  |  |  |  | http://home.schmorp.de/ | 
| 56 |  |  |  |  |  |  |  | 
| 57 |  |  |  |  |  |  | =cut | 
| 58 |  |  |  |  |  |  |  | 
| 59 |  |  |  |  |  |  | 1 | 
| 60 |  |  |  |  |  |  |  |