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.31 by root, Wed Aug 17 05:06:59 2005 UTC

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
354Before the fork IO::AIO first handles all outstanding requests - if other 358Before 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 359added 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 360the parent simply leaves the quiescent state and continues request/result
357and no results will be processed. After the fork the parent simply leaves 361processing, 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. 362same number of threads as were in use by the parent.
360 363
361=head1 SEE ALSO 364=head1 SEE ALSO
362 365
363L<Coro>, L<Linux::AIO>. 366L<Coro>, L<Linux::AIO>.
364 367

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines