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.33 by root, Wed Aug 17 06:12:10 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.4;
69 69
70 @EXPORT = qw(aio_read aio_write aio_open aio_close aio_stat aio_lstat aio_unlink 70 @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); 71 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); 72 @EXPORT_OK = qw(poll_fileno poll_cb min_parallel max_parallel max_outstanding nreqs);
73 73
150Reads or writes C<length> bytes from the specified C<fh> and C<offset> 150Reads 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 151into 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 152callback without the actual number of bytes read (or -1 on error, just
153like the syscall). 153like the syscall).
154 154
155The C<$data> scalar I<MUST NOT> be modified in any way while the request
156is outstanding. Modifying it can result in segfaults or WW3 (if the
157necessary/optional hardware is installed).
158
155Example: Read 15 bytes at offset 7 into scalar C<$buffer>, starting at 159Example: Read 15 bytes at offset 7 into scalar C<$buffer>, starting at
156offset C<0> within the scalar: 160offset C<0> within the scalar:
157 161
158 aio_read $fh, 7, 15, $buffer, 0, sub { 162 aio_read $fh, 7, 15, $buffer, 0, sub {
159 $_[0] > 0 or die "read error: $!"; 163 $_[0] > 0 or die "read error: $!";
349 353
3501; 3541;
351 355
352=head2 FORK BEHAVIOUR 356=head2 FORK BEHAVIOUR
353 357
354IO::AIO handles all outstanding AIO requests before the fork, destroys all 358Before 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 359added in other threads and no results will be processed. After the fork
356fork. 360the parent simply leaves the quiescent state and continues request/result
357 361processing, while the child clears the request/result queue and starts the
362same number of threads as were in use by the parent.
358 363
359=head1 SEE ALSO 364=head1 SEE ALSO
360 365
361L<Coro>, L<Linux::AIO>. 366L<Coro>, L<Linux::AIO>.
362 367

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines