… | |
… | |
134 | aio_lstat aio_unlink aio_rmdir aio_readdir aio_scandir aio_symlink |
134 | aio_lstat aio_unlink aio_rmdir aio_readdir aio_scandir aio_symlink |
135 | aio_fsync aio_fdatasync aio_readahead aio_rename aio_link aio_move |
135 | aio_fsync aio_fdatasync aio_readahead aio_rename aio_link aio_move |
136 | aio_group aio_nop); |
136 | aio_group aio_nop); |
137 | our @EXPORT = (@AIO_REQ, qw(aioreq_pri aioreq_nice)); |
137 | our @EXPORT = (@AIO_REQ, qw(aioreq_pri aioreq_nice)); |
138 | our @EXPORT_OK = qw(poll_fileno poll_cb poll_wait flush |
138 | our @EXPORT_OK = qw(poll_fileno poll_cb poll_wait flush |
139 | min_parallel max_parallel max_outstanding nreqs); |
139 | min_parallel max_parallel nreqs); |
140 | |
140 | |
141 | @IO::AIO::GRP::ISA = 'IO::AIO::REQ'; |
141 | @IO::AIO::GRP::ISA = 'IO::AIO::REQ'; |
142 | |
142 | |
143 | require XSLoader; |
143 | require XSLoader; |
144 | XSLoader::load ("IO::AIO", $VERSION); |
144 | XSLoader::load ("IO::AIO", $VERSION); |
… | |
… | |
426 | with the filenames. |
426 | with the filenames. |
427 | |
427 | |
428 | =item aio_scandir $path, $maxreq, $callback->($dirs, $nondirs) |
428 | =item aio_scandir $path, $maxreq, $callback->($dirs, $nondirs) |
429 | |
429 | |
430 | Scans a directory (similar to C<aio_readdir>) but additionally tries to |
430 | Scans a directory (similar to C<aio_readdir>) but additionally tries to |
431 | separate the entries of directory C<$path> into two sets of names, ones |
431 | efficiently separate the entries of directory C<$path> into two sets of |
432 | you can recurse into (directories or links to them), and ones you cannot |
432 | names, directories you can recurse into (directories), and ones you cannot |
433 | recurse into (everything else). |
433 | recurse into (everything else, including symlinks to directories). |
434 | |
434 | |
435 | C<aio_scandir> is a composite request that creates of many sub requests_ |
435 | C<aio_scandir> is a composite request that creates of many sub requests_ |
436 | C<$maxreq> specifies the maximum number of outstanding aio requests that |
436 | C<$maxreq> specifies the maximum number of outstanding aio requests that |
437 | this function generates. If it is C<< <= 0 >>, then a suitable default |
437 | this function generates. If it is C<< <= 0 >>, then a suitable default |
438 | will be chosen (currently 6). |
438 | will be chosen (currently 6). |
… | |
… | |
682 | =item * They can also can also be added to other IO::AIO::GRP objects. |
682 | =item * They can also can also be added to other IO::AIO::GRP objects. |
683 | |
683 | |
684 | =item * You must not add requests to a group from within the group callback (or |
684 | =item * You must not add requests to a group from within the group callback (or |
685 | any later time). |
685 | any later time). |
686 | |
686 | |
687 | =item * This does not harmonise well with C<max_outstanding>, so best do |
|
|
688 | not combine C<aio_group> with it. Groups and feeders are recommended for |
|
|
689 | this kind of concurrency-limiting. |
|
|
690 | |
|
|
691 | =back |
687 | =back |
692 | |
688 | |
693 | Their lifetime, simplified, looks like this: when they are empty, they |
689 | Their lifetime, simplified, looks like this: when they are empty, they |
694 | will finish very quickly. If they contain only requests that are in the |
690 | will finish very quickly. If they contain only requests that are in the |
695 | C<done> state, they will also finish. Otherwise they will continue to |
691 | C<done> state, they will also finish. Otherwise they will continue to |
… | |
… | |
861 | |
857 | |
862 | Under normal circumstances you don't need to call this function. |
858 | Under normal circumstances you don't need to call this function. |
863 | |
859 | |
864 | =item $oldnreqs = IO::AIO::max_outstanding $nreqs |
860 | =item $oldnreqs = IO::AIO::max_outstanding $nreqs |
865 | |
861 | |
866 | [DEPRECATED] |
862 | [REMOVED] |
867 | |
863 | |
|
|
864 | Pre-2.x versions used max_outstanding for a crude request queue length limit. |
|
|
865 | |
|
|
866 | In 2.x+ you are advised to use a group and a feeder to limit |
|
|
867 | concurrency. The max_outstanding feature ran very unstable (endless |
|
|
868 | recursions causing segfaults, bad interaction with groups etc.) and was |
|
|
869 | removed. |
|
|
870 | |
|
|
871 | I am deeply sorry, but I am still on the hunt for a good limiting interface. |
|
|
872 | |
|
|
873 | Original description was as follows: |
|
|
874 | |
868 | Sets the maximum number of outstanding requests to C<$nreqs>. If you |
875 | Sets the maximum number of outstanding requests to C<$nreqs>. If you try |
869 | try to queue up more than this number of requests, the caller will block until |
876 | to queue up more than this number of requests, the caller will block until |
870 | some requests have been handled. |
877 | some requests have been handled. |
871 | |
|
|
872 | The default is very large, so normally there is no practical limit. If you |
|
|
873 | queue up many requests in a loop it often improves speed if you set |
|
|
874 | this to a relatively low number, such as C<100>. |
|
|
875 | |
|
|
876 | This function does not work well together with C<aio_group>'s, and their |
|
|
877 | feeder interface is better suited to limiting concurrency, so do not use |
|
|
878 | this function. |
|
|
879 | |
|
|
880 | Under normal circumstances you don't need to call this function. |
|
|
881 | |
878 | |
882 | =back |
879 | =back |
883 | |
880 | |
884 | =cut |
881 | =cut |
885 | |
882 | |