… | |
… | |
148 | creates a watcher waiting for "r"eadable or "w"ritable events, |
148 | creates a watcher waiting for "r"eadable or "w"ritable events, |
149 | respectively. C<cb> is the callback to invoke each time the file handle |
149 | respectively. C<cb> is the callback to invoke each time the file handle |
150 | becomes ready. |
150 | becomes ready. |
151 | |
151 | |
152 | The I/O watcher might use the underlying file descriptor or a copy of it. |
152 | The I/O watcher might use the underlying file descriptor or a copy of it. |
153 | It is not allowed to close a file handle as long as any watcher is active |
153 | You must not close a file handle as long as any watcher is active on the |
154 | on the underlying file descriptor. |
154 | underlying file descriptor. |
155 | |
155 | |
156 | Some event loops issue spurious readyness notifications, so you should |
156 | Some event loops issue spurious readyness notifications, so you should |
157 | always use non-blocking calls when reading/writing from/to your file |
157 | always use non-blocking calls when reading/writing from/to your file |
158 | handles. |
158 | handles. |
|
|
159 | |
|
|
160 | Although the callback might get passed parameters, their value and |
|
|
161 | presence is undefined and you cannot rely on them. Portable AnyEvent |
|
|
162 | callbacks cannot use arguments passed to I/O watcher callbacks. |
159 | |
163 | |
160 | Example: |
164 | Example: |
161 | |
165 | |
162 | # wait for readability of STDIN, then read a line and disable the watcher |
166 | # wait for readability of STDIN, then read a line and disable the watcher |
163 | my $w; $w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub { |
167 | my $w; $w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub { |
… | |
… | |
176 | case. |
180 | case. |
177 | |
181 | |
178 | The timer callback will be invoked at most once: if you want a repeating |
182 | The timer callback will be invoked at most once: if you want a repeating |
179 | timer you have to create a new watcher (this is a limitation by both Tk |
183 | timer you have to create a new watcher (this is a limitation by both Tk |
180 | and Glib). |
184 | and Glib). |
|
|
185 | |
|
|
186 | Although the callback might get passed parameters, their value and |
|
|
187 | presence is undefined and you cannot rely on them. Portable AnyEvent |
|
|
188 | callbacks cannot use arguments passed to time watcher callbacks. |
181 | |
189 | |
182 | Example: |
190 | Example: |
183 | |
191 | |
184 | # fire an event after 7.7 seconds |
192 | # fire an event after 7.7 seconds |
185 | my $w = AnyEvent->timer (after => 7.7, cb => sub { |
193 | my $w = AnyEvent->timer (after => 7.7, cb => sub { |
… | |
… | |
946 | file descriptors grows high. In this benchmark, all events become ready at |
954 | file descriptors grows high. In this benchmark, all events become ready at |
947 | the same time, so select/poll-based implementations get an unnatural speed |
955 | the same time, so select/poll-based implementations get an unnatural speed |
948 | boost. |
956 | boost. |
949 | |
957 | |
950 | C<EV> is the sole leader regarding speed and memory use, which are both |
958 | C<EV> is the sole leader regarding speed and memory use, which are both |
951 | maximal/minimal, respectively. Even when going through AnyEvent, there are |
959 | maximal/minimal, respectively. Even when going through AnyEvent, it uses |
952 | only two event loops that use slightly less memory (the C<Event> module |
960 | far less memory than any other event loop and is still faster than Event |
953 | natively and the pure perl backend), and no faster event models, not even |
961 | natively. |
954 | C<Event> natively. |
|
|
955 | |
962 | |
956 | The pure perl implementation is hit in a few sweet spots (both the |
963 | The pure perl implementation is hit in a few sweet spots (both the |
957 | zero timeout and the use of a single fd hit optimisations in the perl |
964 | zero timeout and the use of a single fd hit optimisations in the perl |
958 | interpreter and the backend itself, and all watchers become ready at the |
965 | interpreter and the backend itself, and all watchers become ready at the |
959 | same time). Nevertheless this shows that it adds very little overhead in |
966 | same time). Nevertheless this shows that it adds very little overhead in |