… | |
… | |
271 | |
271 | |
272 | Example 2: fire an event after 0.5 seconds, then roughly every second. |
272 | Example 2: fire an event after 0.5 seconds, then roughly every second. |
273 | |
273 | |
274 | my $w = AnyEvent->timer (after => 0.5, interval => 1, cb => sub { |
274 | my $w = AnyEvent->timer (after => 0.5, interval => 1, cb => sub { |
275 | warn "timeout\n"; |
275 | warn "timeout\n"; |
276 | }; |
276 | }); |
277 | |
277 | |
278 | =head3 TIMING ISSUES |
278 | =head3 TIMING ISSUES |
279 | |
279 | |
280 | There are two ways to handle timers: based on real time (relative, "fire |
280 | There are two ways to handle timers: based on real time (relative, "fire |
281 | in 10 seconds") and based on wallclock time (absolute, "fire at 12 |
281 | in 10 seconds") and based on wallclock time (absolute, "fire at 12 |
… | |
… | |
1147 | a longer non-exhaustive list), and the list is heavily biased towards |
1147 | a longer non-exhaustive list), and the list is heavily biased towards |
1148 | modules of the AnyEvent author himself :) |
1148 | modules of the AnyEvent author himself :) |
1149 | |
1149 | |
1150 | =over 4 |
1150 | =over 4 |
1151 | |
1151 | |
1152 | =item L<AnyEvent::Util> |
1152 | =item L<AnyEvent::Util> (part of the AnyEvent distribution) |
1153 | |
1153 | |
1154 | Contains various utility functions that replace often-used blocking |
1154 | Contains various utility functions that replace often-used blocking |
1155 | functions such as C<inet_aton> with event/callback-based versions. |
1155 | functions such as C<inet_aton> with event/callback-based versions. |
1156 | |
1156 | |
1157 | =item L<AnyEvent::Socket> |
1157 | =item L<AnyEvent::Socket> (part of the AnyEvent distribution) |
1158 | |
1158 | |
1159 | Provides various utility functions for (internet protocol) sockets, |
1159 | Provides various utility functions for (internet protocol) sockets, |
1160 | addresses and name resolution. Also functions to create non-blocking tcp |
1160 | addresses and name resolution. Also functions to create non-blocking tcp |
1161 | connections or tcp servers, with IPv6 and SRV record support and more. |
1161 | connections or tcp servers, with IPv6 and SRV record support and more. |
1162 | |
1162 | |
1163 | =item L<AnyEvent::Handle> |
1163 | =item L<AnyEvent::Handle> (part of the AnyEvent distribution) |
1164 | |
1164 | |
1165 | Provide read and write buffers, manages watchers for reads and writes, |
1165 | Provide read and write buffers, manages watchers for reads and writes, |
1166 | supports raw and formatted I/O, I/O queued and fully transparent and |
1166 | supports raw and formatted I/O, I/O queued and fully transparent and |
1167 | non-blocking SSL/TLS (via L<AnyEvent::TLS>). |
1167 | non-blocking SSL/TLS (via L<AnyEvent::TLS>). |
1168 | |
1168 | |
1169 | =item L<AnyEvent::DNS> |
1169 | =item L<AnyEvent::DNS> (part of the AnyEvent distribution) |
1170 | |
1170 | |
1171 | Provides rich asynchronous DNS resolver capabilities. |
1171 | Provides rich asynchronous DNS resolver capabilities. |
1172 | |
1172 | |
1173 | =item L<AnyEvent::HTTP>, L<AnyEvent::IRC>, L<AnyEvent::XMPP>, L<AnyEvent::GPSD>, L<AnyEvent::IGS>, L<AnyEvent::FCP> |
1173 | =item L<AnyEvent::HTTP>, L<AnyEvent::IRC>, L<AnyEvent::XMPP>, L<AnyEvent::GPSD>, L<AnyEvent::IGS>, L<AnyEvent::FCP> |
1174 | |
1174 | |
1175 | Implement event-based interfaces to the protocols of the same name (for |
1175 | Implement event-based interfaces to the protocols of the same name (for |
1176 | the curious, IGS is the International Go Server and FCP is the Freenet |
1176 | the curious, IGS is the International Go Server and FCP is the Freenet |
1177 | Client Protocol). |
1177 | Client Protocol). |
1178 | |
1178 | |
1179 | =item L<AnyEvent::AIO> |
1179 | =item L<AnyEvent::AIO> (part of the AnyEvent distribution) |
1180 | |
1180 | |
1181 | Truly asynchronous (as opposed to non-blocking) I/O, should be in the |
1181 | Truly asynchronous (as opposed to non-blocking) I/O, should be in the |
1182 | toolbox of every event programmer. AnyEvent::AIO transparently fuses |
1182 | toolbox of every event programmer. AnyEvent::AIO transparently fuses |
1183 | L<IO::AIO> and AnyEvent together, giving AnyEvent access to event-based |
1183 | L<IO::AIO> and AnyEvent together, giving AnyEvent access to event-based |
1184 | file I/O, and much more. |
1184 | file I/O, and much more. |
… | |
… | |
2929 | This module is part of perl since release 5.008. It will be used when the |
2929 | This module is part of perl since release 5.008. It will be used when the |
2930 | chosen event library does not come with a timing source of its own. The |
2930 | chosen event library does not come with a timing source of its own. The |
2931 | pure-perl event loop (L<AnyEvent::Loop>) will additionally load it to |
2931 | pure-perl event loop (L<AnyEvent::Loop>) will additionally load it to |
2932 | try to use a monotonic clock for timing stability. |
2932 | try to use a monotonic clock for timing stability. |
2933 | |
2933 | |
|
|
2934 | =item L<AnyEvent::AIO> (and L<IO::AIO>) |
|
|
2935 | |
|
|
2936 | The default implementation of L<AnyEvent::IO> is to do I/O synchronously, |
|
|
2937 | stopping programs while they access the disk, which is fine for a lot of |
|
|
2938 | programs. |
|
|
2939 | |
|
|
2940 | Installing AnyEvent::AIO (and its IO::AIO dependency) makes it switch to |
|
|
2941 | a true asynchronous implementation, so event processing can continue even |
|
|
2942 | while waiting for disk I/O. |
|
|
2943 | |
2934 | =back |
2944 | =back |
2935 | |
2945 | |
2936 | |
2946 | |
2937 | =head1 FORK |
2947 | =head1 FORK |
2938 | |
2948 | |