… | |
… | |
316 | lists all projects available here.</p> |
316 | lists all projects available here.</p> |
317 | </div> |
317 | </div> |
318 | |
318 | |
319 | <div class='section section-resources'> |
319 | <div class='section section-resources'> |
320 | <table class='resources'> |
320 | <table class='resources'> |
|
|
321 | <tr><td><tt class='icon'>BUGS</tt></td><td class='rr'>Do not use rt.cpan.org to report bugs, use an appropriate mailinglist or mail the author directly.</td></tr> |
321 | <tr><td><tt class='icon'>CVS</tt></td><td class='rr'>All CVS modules can be browsed <a href="http://cvs.schmorp.de/">here</a></td></tr> |
322 | <tr><td><tt class='icon'>CVS</tt></td><td class='rr'>All CVS modules can be browsed <a href="http://cvs.schmorp.de/">here</a></td></tr> |
322 | <tr><td><tt class='icon'>GIT</tt></td><td class='rr'>All GIT repositories can be found <a href="http://git.ta-sa.org/">here</a></td></tr> |
323 | <tr><td><tt class='icon'>GIT</tt></td><td class='rr'>All GIT repositories can be found <a href="http://git.ta-sa.org/">here</a></td></tr> |
323 | <tr><td><tt class='icon'>FILE</tt></td><td class='rr'>Most file releases can be found <a href="http://dist.schmorp.de/">here</a> or on CPAN (for Perl modules)</td></tr> |
324 | <tr><td><tt class='icon'>FILE</tt></td><td class='rr'>Most file releases can be found <a href="http://dist.schmorp.de/">here</a> or on CPAN (for Perl modules)</td></tr> |
324 | <tr><td><tt class='icon'>LIST</tt></td><td class='rr'>All mailinglists can be found <a href="http://lists.schmorp.de/mailman/listinfo">here</a></td></tr> |
325 | <tr><td><tt class='icon'>LIST</tt></td><td class='rr'>All mailinglists can be found <a href="http://lists.schmorp.de/mailman/listinfo">here</a></td></tr> |
325 | <!--<tr><td><tt class='icon'>WIKI</tt></td><td class='rr'>The Wiki can be found <a href="http://wiki.schmorp.de/">here</a></td></tr>--> |
326 | <!--<tr><td><tt class='icon'>WIKI</tt></td><td class='rr'>The Wiki can be found <a href="http://wiki.schmorp.de/">here</a></td></tr>--> |
… | |
… | |
501 | programs when otherwise you couldn't - for example, when you use POSIX |
502 | programs when otherwise you couldn't - for example, when you use POSIX |
502 | threads in your perl process then it generally isn't safe to call |
503 | threads in your perl process then it generally isn't safe to call |
503 | fork from perl, but it is safe to use this module to execute external |
504 | fork from perl, but it is safe to use this module to execute external |
504 | processes. |
505 | processes. |
505 | |
506 | |
506 | AnyEvent-Fork cpan cvs-pod(Fork.pm,) cvs-pod(Fork/Early.pm) cvs-pod(Fork/Template) cvs-co(Changes) |
507 | AnyEvent-Fork cpan cvs-pod(Fork.pm,) cvs-pod(Fork/Early.pm) cvs-pod(Fork/Template.pm) cvs-co(Changes) list(anyevent) irc(anyevent) |
507 | Everything you wanted to use fork() for, but couldn't. |
508 | Everything you wanted to use fork() for, but couldn't. |
508 | |
509 | |
509 | This module allows you to create new processes, without actually forking |
510 | This module allows you to create new processes, without actually forking |
510 | them from your current process (avoiding the problems of forking), but |
511 | them from your current process (avoiding the problems of forking), but |
511 | preserving most of the advantages of fork. |
512 | preserving most of the advantages of fork. |
… | |
… | |
513 | It can be used to create new worker processes or new independent |
514 | It can be used to create new worker processes or new independent |
514 | subprocesses for short- and long-running jobs, process pools (e.g. for |
515 | subprocesses for short- and long-running jobs, process pools (e.g. for |
515 | use in pre-forked servers) but also to spawn new external processes (such |
516 | use in pre-forked servers) but also to spawn new external processes (such |
516 | as CGI scripts from a webserver), which can be faster (and more well |
517 | as CGI scripts from a webserver), which can be faster (and more well |
517 | behaved) than using fork+exec in big processes. |
518 | behaved) than using fork+exec in big processes. |
|
|
519 | |
|
|
520 | AnyEvent-Fork-RPC cpan cvs-pod(RPC.pm,) cvs-co(Changes) list(anyevent) irc(anyevent) |
|
|
521 | Simple RPC extension for AnyEvent::Fork |
|
|
522 | |
|
|
523 | This module implements a simple RPC protocol and backend for processes |
|
|
524 | created via L<AnyEvent::Fork>, allowing you to call a function in the |
|
|
525 | child process and receive its return values (up to 4GB serialised). |
|
|
526 | |
|
|
527 | It implements two different backends: a synchronous one that works like a |
|
|
528 | normal function call, and an asynchronous one that can run multiple jobs |
|
|
529 | concurrently in the child, using AnyEvent. |
|
|
530 | |
|
|
531 | It also implements an asynchronous event mechanism from the child to the |
|
|
532 | parent, that could be used for progress indications or other information. |
|
|
533 | |
|
|
534 | AnyEvent-Fork-Pool cpan cvs-pod(Pool.pm,) cvs-co(Changes) list(anyevent) irc(anyevent) |
|
|
535 | Simple process pool manager on top of AnyEvent::Fork and AnyEvent::Fork::RPC. |
|
|
536 | |
|
|
537 | This module uses processes created via AnyEvent::Fork and the RPC |
|
|
538 | protocol implement in AnyEvent::Fork::RPC to create a load-balanced pool |
|
|
539 | of processes that handles jobs. |
|
|
540 | |
|
|
541 | Understanding of AnyEvent::Fork is helpful but not critical to be able |
|
|
542 | to use this module, but a thorough understanding of AnyEvent::Fork::RPC |
|
|
543 | is, as it defines the actual API that needs to be implemented in the |
|
|
544 | children. |
518 | |
545 | |
519 | Guard cpan cvs-pod(Guard.pm,) cvs-co(Changes) |
546 | Guard cpan cvs-pod(Guard.pm,) cvs-co(Changes) |
520 | This small module implements scope and object guards, that is, code blocks |
547 | This small module implements scope and object guards, that is, code blocks |
521 | that are executed when a scope is being exited (or an object is destroyed). |
548 | that are executed when a scope is being exited (or an object is destroyed). |
522 | |
549 | |