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

Comparing IO-AIO/AIO.pm (file contents):
Revision 1.77 by root, Wed Oct 25 17:57:30 2006 UTC vs.
Revision 1.79 by root, Thu Oct 26 14:35:34 2006 UTC

780 780
781Process all outstanding events on the result pipe. You have to call this 781Process all outstanding events on the result pipe. You have to call this
782regularly. Returns the number of events processed. Returns immediately 782regularly. Returns the number of events processed. Returns immediately
783when no events are outstanding. 783when no events are outstanding.
784 784
785If not all requests were processed for whatever reason, the filehandle
786will still be ready when C<poll_cb> returns.
787
785Example: Install an Event watcher that automatically calls 788Example: Install an Event watcher that automatically calls
786IO::AIO::poll_cb with high priority: 789IO::AIO::poll_cb with high priority:
787 790
788 Event->io (fd => IO::AIO::poll_fileno, 791 Event->io (fd => IO::AIO::poll_fileno,
789 poll => 'r', async => 1, 792 poll => 'r', async => 1,
790 cb => \&IO::AIO::poll_cb); 793 cb => \&IO::AIO::poll_cb);
794
795=item IO::AIO::poll_some $max_requests
796
797Similar to C<poll_cb>, but only processes up to C<$max_requests> requests
798at a time.
799
800Useful if you want to ensure some level of interactiveness when perl is
801not fast enough to process all requests in time.
802
803Example: Install an Event watcher that automatically calls
804IO::AIO::poll_some with low priority, to ensure that other parts of the
805program get the CPU sometimes even under high AIO load.
806
807 Event->io (fd => IO::AIO::poll_fileno,
808 poll => 'r', nice => 1,
809 cb => sub { IO::AIO::poll_some 256 });
791 810
792=item IO::AIO::poll_wait 811=item IO::AIO::poll_wait
793 812
794Wait till the result filehandle becomes ready for reading (simply does a 813Wait till the result filehandle becomes ready for reading (simply does a
795C<select> on the filehandle. This is useful if you want to synchronously wait 814C<select> on the filehandle. This is useful if you want to synchronously wait
855This module automatically runs C<max_parallel 0> at program end, to ensure 874This module automatically runs C<max_parallel 0> at program end, to ensure
856that all threads are killed and that there are no outstanding requests. 875that all threads are killed and that there are no outstanding requests.
857 876
858Under normal circumstances you don't need to call this function. 877Under normal circumstances you don't need to call this function.
859 878
860=item $oldnreqs = IO::AIO::max_outstanding $nreqs 879=item $oldmaxreqs = IO::AIO::max_outstanding $maxreqs
861 880
862[REMOVED] 881This is a very bad function to use in interactive programs because it
882blocks, and a bad way to reduce concurrency because it is inexact: Better
883use an C<aio_group> together with a feed callback.
863 884
864Pre-2.x versions used max_outstanding for a crude request queue length limit.
865
866In 2.x+ you are advised to use a group and a feeder to limit
867concurrency. The max_outstanding feature ran very unstable (endless
868recursions causing segfaults, bad interaction with groups etc.) and was
869removed.
870
871I am deeply sorry, but I am still on the hunt for a good limiting interface.
872
873Original description was as follows:
874
875Sets the maximum number of outstanding requests to C<$nreqs>. If you try 885Sets the maximum number of outstanding requests to C<$nreqs>. If you
876to queue up more than this number of requests, the caller will block until 886to queue up more than this number of requests, the next call to the
877some requests have been handled. 887C<poll_cb> (and C<poll_some> and other functions calling C<poll_cb>)
888function will block until the limit is no longer exceeded.
889
890The default value is very large, so there is no practical limit on the
891number of outstanding requests.
892
893You can still queue as many requests as you want. Therefore,
894C<max_oustsanding> is mainly useful in simple scripts (with low values) or
895as a stop gap to shield against fatal memory overflow (with large values).
878 896
879=back 897=back
880 898
881=cut 899=cut
882 900

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines