… | |
… | |
150 | Reads or writes C<length> bytes from the specified C<fh> and C<offset> |
150 | Reads or writes C<length> bytes from the specified C<fh> and C<offset> |
151 | into the scalar given by C<data> and offset C<dataoffset> and calls the |
151 | into the scalar given by C<data> and offset C<dataoffset> and calls the |
152 | callback without the actual number of bytes read (or -1 on error, just |
152 | callback without the actual number of bytes read (or -1 on error, just |
153 | like the syscall). |
153 | like the syscall). |
154 | |
154 | |
|
|
155 | The C<$data> scalar I<MUST NOT> be modified in any way while the request |
|
|
156 | is outstanding. Modifying it can result in segfaults or WW3 (if the |
|
|
157 | necessary/optional hardware is installed). |
|
|
158 | |
155 | Example: Read 15 bytes at offset 7 into scalar C<$buffer>, starting at |
159 | Example: Read 15 bytes at offset 7 into scalar C<$buffer>, starting at |
156 | offset C<0> within the scalar: |
160 | offset 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 | |
350 | 1; |
354 | 1; |
351 | |
355 | |
352 | =head2 FORK BEHAVIOUR |
356 | =head2 FORK BEHAVIOUR |
353 | |
357 | |
354 | Before the fork IO::AIO first handles all outstanding requests - if other |
358 | Before the fork IO::AIO enters a quiescent state where no requests can be |
355 | threads add requests during this period, this time is prolonged. It then |
359 | added in other threads and no results will be processed. After the fork |
356 | enters a quiescent state where no requests can be added in other threads |
360 | the parent simply leaves the quiescent state and continues request/result |
357 | and no results will be processed. After the fork the parent simply leaves |
361 | processing, while the child clears the request/result queue and starts the |
358 | the quiescent state and continues request processing, while the child will |
362 | same number of threads as were in use by the parent. |
359 | free the request and result queue and start the same number of threads as |
|
|
360 | were in use by the parent. |
|
|
361 | |
363 | |
362 | =head1 SEE ALSO |
364 | =head1 SEE ALSO |
363 | |
365 | |
364 | L<Coro>, L<Linux::AIO>. |
366 | L<Coro>, L<Linux::AIO>. |
365 | |
367 | |