ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.pod
(Generate patch)

Comparing libev/ev.pod (file contents):
Revision 1.334 by root, Mon Oct 25 10:30:23 2010 UTC vs.
Revision 1.337 by root, Sun Oct 31 20:20:20 2010 UTC

463epoll scales either O(1) or O(active_fds). 463epoll scales either O(1) or O(active_fds).
464 464
465The epoll mechanism deserves honorable mention as the most misdesigned 465The epoll mechanism deserves honorable mention as the most misdesigned
466of the more advanced event mechanisms: mere annoyances include silently 466of the more advanced event mechanisms: mere annoyances include silently
467dropping file descriptors, requiring a system call per change per file 467dropping file descriptors, requiring a system call per change per file
468descriptor (and unnecessary guessing of parameters), problems with dup and 468descriptor (and unnecessary guessing of parameters), problems with dup,
469returning before the timeout value requiring additional iterations and so
469so on. The biggest issue is fork races, however - if a program forks then 470on. The biggest issue is fork races, however - if a program forks then
470I<both> parent and child process have to recreate the epoll set, which can 471I<both> parent and child process have to recreate the epoll set, which can
471take considerable time (one syscall per file descriptor) and is of course 472take considerable time (one syscall per file descriptor) and is of course
472hard to detect. 473hard to detect.
473 474
474Epoll is also notoriously buggy - embedding epoll fds I<should> work, but 475Epoll is also notoriously buggy - embedding epoll fds I<should> work, but
823Can be used to make a call to C<ev_run> return early (but only after it 824Can be used to make a call to C<ev_run> return early (but only after it
824has processed all outstanding events). The C<how> argument must be either 825has processed all outstanding events). The C<how> argument must be either
825C<EVBREAK_ONE>, which will make the innermost C<ev_run> call return, or 826C<EVBREAK_ONE>, which will make the innermost C<ev_run> call return, or
826C<EVBREAK_ALL>, which will make all nested C<ev_run> calls return. 827C<EVBREAK_ALL>, which will make all nested C<ev_run> calls return.
827 828
828This "unloop state" will be cleared when entering C<ev_run> again. 829This "break state" will be cleared when entering C<ev_run> again.
829 830
830It is safe to call C<ev_break> from outside any C<ev_run> calls. ##TODO## 831It is safe to call C<ev_break> from outside any C<ev_run> calls, too.
831 832
832=item ev_ref (loop) 833=item ev_ref (loop)
833 834
834=item ev_unref (loop) 835=item ev_unref (loop)
835 836
1154programs, though, as the fd could already be closed and reused for another 1155programs, though, as the fd could already be closed and reused for another
1155thing, so beware. 1156thing, so beware.
1156 1157
1157=back 1158=back
1158 1159
1159=head2 WATCHER STATES
1160
1161There are various watcher states mentioned throughout this manual -
1162active, pending and so on. In this section these states and the rules to
1163transition between them will be described in more detail - and while these
1164rules might look complicated, they usually do "the right thing".
1165
1166=over 4
1167
1168=item initialiased
1169
1170Before a watcher can be registered with the event looop it has to be
1171initialised. This can be done with a call to C<ev_TYPE_init>, or calls to
1172C<ev_init> followed by the watcher-specific C<ev_TYPE_set> function.
1173
1174In this state it is simply some block of memory that is suitable for use
1175in an event loop. It can be moved around, freed, reused etc. at will.
1176
1177=item started/running/active
1178
1179Once a watcher has been started with a call to C<ev_TYPE_start> it becomes
1180property of the event loop, and is actively waiting for events. While in
1181this state it cannot be accessed (except in a few documented ways), moved,
1182freed or anything else - the only legal thing is to keep a pointer to it,
1183and call libev functions on it that are documented to work on active watchers.
1184
1185=item pending
1186
1187If a watcher is active and libev determines that an event it is interested
1188in has occurred (such as a timer expiring), it will become pending. It will
1189stay in this pending state until either it is stopped or its callback is
1190about to be invoked, so it is not normally pending inside the watcher
1191callback.
1192
1193The watcher might or might not be active while it is pending (for example,
1194an expired non-repeating timer can be pending but no longer active). If it
1195is stopped, it can be freely accessed (e.g. by calling C<ev_TYPE_set>),
1196but it is still property of the event loop at this time, so cannot be
1197moved, freed or reused. And if it is active the rules described in the
1198previous item still apply.
1199
1200It is also possible to feed an event on a watcher that is not active (e.g.
1201via C<ev_feed_event>), in which case it becomes pending without being
1202active.
1203
1204=item stopped
1205
1206A watcher can be stopped implicitly by libev (in which case it might still
1207be pending), or explicitly by calling its C<ev_TYPE_stop> function. The
1208latter will clear any pending state the watcher might be in, regardless
1209of whether it was active or not, so stopping a watcher explicitly before
1210freeing it is often a good idea.
1211
1212While stopped (and not pending) the watcher is essentially in the
1213initialised state, that is it can be reused, moved, modified in any way
1214you wish.
1215
1216=back
1217
1218=head2 GENERIC WATCHER FUNCTIONS 1160=head2 GENERIC WATCHER FUNCTIONS
1219 1161
1220=over 4 1162=over 4
1221 1163
1222=item C<ev_init> (ev_TYPE *watcher, callback) 1164=item C<ev_init> (ev_TYPE *watcher, callback)
1363 1305
1364See also C<ev_feed_fd_event> and C<ev_feed_signal_event> for related 1306See also C<ev_feed_fd_event> and C<ev_feed_signal_event> for related
1365functions that do not need a watcher. 1307functions that do not need a watcher.
1366 1308
1367=back 1309=back
1368
1369 1310
1370=head2 ASSOCIATING CUSTOM DATA WITH A WATCHER 1311=head2 ASSOCIATING CUSTOM DATA WITH A WATCHER
1371 1312
1372Each watcher has, by default, a member C<void *data> that you can change 1313Each watcher has, by default, a member C<void *data> that you can change
1373and read at any time: libev will completely ignore it. This can be used 1314and read at any time: libev will completely ignore it. This can be used
1429 t2_cb (EV_P_ ev_timer *w, int revents) 1370 t2_cb (EV_P_ ev_timer *w, int revents)
1430 { 1371 {
1431 struct my_biggy big = (struct my_biggy *) 1372 struct my_biggy big = (struct my_biggy *)
1432 (((char *)w) - offsetof (struct my_biggy, t2)); 1373 (((char *)w) - offsetof (struct my_biggy, t2));
1433 } 1374 }
1375
1376=head2 WATCHER STATES
1377
1378There are various watcher states mentioned throughout this manual -
1379active, pending and so on. In this section these states and the rules to
1380transition between them will be described in more detail - and while these
1381rules might look complicated, they usually do "the right thing".
1382
1383=over 4
1384
1385=item initialiased
1386
1387Before a watcher can be registered with the event looop it has to be
1388initialised. This can be done with a call to C<ev_TYPE_init>, or calls to
1389C<ev_init> followed by the watcher-specific C<ev_TYPE_set> function.
1390
1391In this state it is simply some block of memory that is suitable for use
1392in an event loop. It can be moved around, freed, reused etc. at will.
1393
1394=item started/running/active
1395
1396Once a watcher has been started with a call to C<ev_TYPE_start> it becomes
1397property of the event loop, and is actively waiting for events. While in
1398this state it cannot be accessed (except in a few documented ways), moved,
1399freed or anything else - the only legal thing is to keep a pointer to it,
1400and call libev functions on it that are documented to work on active watchers.
1401
1402=item pending
1403
1404If a watcher is active and libev determines that an event it is interested
1405in has occurred (such as a timer expiring), it will become pending. It will
1406stay in this pending state until either it is stopped or its callback is
1407about to be invoked, so it is not normally pending inside the watcher
1408callback.
1409
1410The watcher might or might not be active while it is pending (for example,
1411an expired non-repeating timer can be pending but no longer active). If it
1412is stopped, it can be freely accessed (e.g. by calling C<ev_TYPE_set>),
1413but it is still property of the event loop at this time, so cannot be
1414moved, freed or reused. And if it is active the rules described in the
1415previous item still apply.
1416
1417It is also possible to feed an event on a watcher that is not active (e.g.
1418via C<ev_feed_event>), in which case it becomes pending without being
1419active.
1420
1421=item stopped
1422
1423A watcher can be stopped implicitly by libev (in which case it might still
1424be pending), or explicitly by calling its C<ev_TYPE_stop> function. The
1425latter will clear any pending state the watcher might be in, regardless
1426of whether it was active or not, so stopping a watcher explicitly before
1427freeing it is often a good idea.
1428
1429While stopped (and not pending) the watcher is essentially in the
1430initialised state, that is it can be reused, moved, modified in any way
1431you wish.
1432
1433=back
1434 1434
1435=head2 WATCHER PRIORITY MODELS 1435=head2 WATCHER PRIORITY MODELS
1436 1436
1437Many event loops support I<watcher priorities>, which are usually small 1437Many event loops support I<watcher priorities>, which are usually small
1438integers that influence the ordering of event callback invocation 1438integers that influence the ordering of event callback invocation

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines