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

Comparing libev/ev.pod (file contents):
Revision 1.394 by root, Tue Jan 24 16:37:12 2012 UTC vs.
Revision 1.398 by root, Mon Apr 2 18:39:54 2012 UTC

567 567
568It scales in the same way as the epoll backend, but the interface to the 568It scales in the same way as the epoll backend, but the interface to the
569kernel is more efficient (which says nothing about its actual speed, of 569kernel is more efficient (which says nothing about its actual speed, of
570course). While stopping, setting and starting an I/O watcher does never 570course). While stopping, setting and starting an I/O watcher does never
571cause an extra system call as with C<EVBACKEND_EPOLL>, it still adds up to 571cause an extra system call as with C<EVBACKEND_EPOLL>, it still adds up to
572two event changes per incident. Support for C<fork ()> is very bad (but 572two event changes per incident. Support for C<fork ()> is very bad (you
573sane, unlike epoll) and it drops fds silently in similarly hard-to-detect 573might have to leak fd's on fork, but it's more sane than epoll) and it
574cases 574drops fds silently in similarly hard-to-detect cases
575 575
576This backend usually performs well under most conditions. 576This backend usually performs well under most conditions.
577 577
578While nominally embeddable in other event loops, this doesn't work 578While nominally embeddable in other event loops, this doesn't work
579everywhere, so you might need to test for this. And since it is broken 579everywhere, so you might need to test for this. And since it is broken
2112 2112
2113This will act as if the timer timed out, and restarts it again if it is 2113This will act as if the timer timed out, and restarts it again if it is
2114repeating. It basically works like calling C<ev_timer_stop>, updating the 2114repeating. It basically works like calling C<ev_timer_stop>, updating the
2115timeout to the C<repeat> value and calling C<ev_timer_start>. 2115timeout to the C<repeat> value and calling C<ev_timer_start>.
2116 2116
2117The exact semantics are as in the wollofing rules, all of which will be 2117The exact semantics are as in the following rules, all of which will be
2118applied to the watcher: 2118applied to the watcher:
2119 2119
2120=over 4 2120=over 4
2121 2121
2122=item If the timer is pending, the pending status is always cleared. 2122=item If the timer is pending, the pending status is always cleared.
3917with C<operator ()> can be used as callbacks. Other types should be easy 3917with C<operator ()> can be used as callbacks. Other types should be easy
3918to add as long as they only need one additional pointer for context. If 3918to add as long as they only need one additional pointer for context. If
3919you need support for other types of functors please contact the author 3919you need support for other types of functors please contact the author
3920(preferably after implementing it). 3920(preferably after implementing it).
3921 3921
3922For all this to work, your C++ compiler either has to use the same calling
3923conventions as your C compiler (for static member functions), or you have
3924to embed libev and compile libev itself as C++.
3925
3922Here is a list of things available in the C<ev> namespace: 3926Here is a list of things available in the C<ev> namespace:
3923 3927
3924=over 4 3928=over 4
3925 3929
3926=item C<ev::READ>, C<ev::WRITE> etc. 3930=item C<ev::READ>, C<ev::WRITE> etc.
4504If defined to be C<1>, libev will compile in support for the Linux inotify 4508If defined to be C<1>, libev will compile in support for the Linux inotify
4505interface to speed up C<ev_stat> watchers. Its actual availability will 4509interface to speed up C<ev_stat> watchers. Its actual availability will
4506be detected at runtime. If undefined, it will be enabled if the headers 4510be detected at runtime. If undefined, it will be enabled if the headers
4507indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled. 4511indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled.
4508 4512
4513=item EV_NO_SMP
4514
4515If defined to be C<1>, libev will assume that memory is always coherent
4516between threads, that is, threads can be used, but threads never run on
4517different cpus (or different cpu cores). This reduces dependencies
4518and makes libev faster.
4519
4520=item EV_NO_THREADS
4521
4522If defined to be C<1>, libev will assume that it will never be called
4523from different threads, which is a stronger assumption than C<EV_NO_SMP>,
4524above. This reduces dependencies and makes libev faster.
4525
4509=item EV_ATOMIC_T 4526=item EV_ATOMIC_T
4510 4527
4511Libev requires an integer type (suitable for storing C<0> or C<1>) whose 4528Libev requires an integer type (suitable for storing C<0> or C<1>) whose
4512access is atomic and serialised with respect to other threads or signal 4529access is atomic and serialised with respect to other threads or signal
4513contexts. No such type is easily found in the C language, so you can 4530contexts. No such type is easily found in the C language, so you can

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines