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.30 by root, Wed Aug 17 04:47:38 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
354Before the fork IO::AIO first handles all outstanding requests - if other 359Before the fork IO::AIO enters a quiescent state where no requests can be
355threads add requests during this period, this time is prolonged. It then 360added in other threads and no results will be processed. After the fork
356enters a quiescent state where no requests can be added in other threads 361the parent simply leaves the quiescent state and continues request/result
357and no results will be processed. After the fork the parent simply leaves 362processing, while the child clears the request/result queue and starts the
358the quiescent state and continues request processing, while the child
359starts the same number of threads as were in use by the parent. 363same number of threads as were in use by the parent.
360 364
361=head1 SEE ALSO 365=head1 SEE ALSO
362 366
363L<Coro>, L<Linux::AIO>. 367L<Coro>, L<Linux::AIO>.
364 368

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines