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.28 by root, Tue Aug 16 23:33:34 2005 UTC vs.
Revision 1.32 by root, Wed Aug 17 05:26:20 2005 UTC

63use base 'Exporter'; 63use base 'Exporter';
64 64
65use Fcntl (); 65use Fcntl ();
66 66
67BEGIN { 67BEGIN {
68 $VERSION = 1.2; 68 $VERSION = 1.3;
69
69 70
70 @EXPORT = qw(aio_read aio_write aio_open aio_close aio_stat aio_lstat aio_unlink 71 @EXPORT = qw(aio_read aio_write aio_open aio_close aio_stat aio_lstat aio_unlink
71 aio_rmdir aio_symlink aio_fsync aio_fdatasync aio_readahead); 72 aio_rmdir aio_symlink aio_fsync aio_fdatasync aio_readahead);
72 @EXPORT_OK = qw(poll_fileno poll_cb min_parallel max_parallel max_outstanding nreqs); 73 @EXPORT_OK = qw(poll_fileno poll_cb min_parallel max_parallel max_outstanding nreqs);
73 74
150Reads or writes C<length> bytes from the specified C<fh> and C<offset> 151Reads or writes C<length> bytes from the specified C<fh> and C<offset>
151into the scalar given by C<data> and offset C<dataoffset> and calls the 152into the scalar given by C<data> and offset C<dataoffset> and calls the
152callback without the actual number of bytes read (or -1 on error, just 153callback without the actual number of bytes read (or -1 on error, just
153like the syscall). 154like the syscall).
154 155
156The C<$data> scalar I<MUST NOT> be modified in any way while the request
157is outstanding. Modifying it can result in segfaults or WW3 (if the
158necessary/optional hardware is installed).
159
155Example: Read 15 bytes at offset 7 into scalar C<$buffer>, starting at 160Example: Read 15 bytes at offset 7 into scalar C<$buffer>, starting at
156offset C<0> within the scalar: 161offset C<0> within the scalar:
157 162
158 aio_read $fh, 7, 15, $buffer, 0, sub { 163 aio_read $fh, 7, 15, $buffer, 0, sub {
159 $_[0] > 0 or die "read error: $!"; 164 $_[0] > 0 or die "read error: $!";
349 354
3501; 3551;
351 356
352=head2 FORK BEHAVIOUR 357=head2 FORK BEHAVIOUR
353 358
354IO::AIO handles all outstanding AIO requests before the fork, destroys all 359Before the fork IO::AIO enters a quiescent state where no requests can be
355AIO threads, and recreates them in both the parent and the child after the 360added in other threads and no results will be processed. After the fork
356fork. 361the parent simply leaves the quiescent state and continues request/result
357 362processing, while the child clears the request/result queue and starts the
363same number of threads as were in use by the parent.
358 364
359=head1 SEE ALSO 365=head1 SEE ALSO
360 366
361L<Coro>, L<Linux::AIO>. 367L<Coro>, L<Linux::AIO>.
362 368

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines