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

Comparing libev/ev.pod (file contents):
Revision 1.164 by root, Sat May 31 23:22:23 2008 UTC vs.
Revision 1.181 by root, Fri Sep 19 03:47:50 2008 UTC

359writing a server, you should C<accept ()> in a loop to accept as many 359writing a server, you should C<accept ()> in a loop to accept as many
360connections as possible during one iteration. You might also want to have 360connections as possible during one iteration. You might also want to have
361a look at C<ev_set_io_collect_interval ()> to increase the amount of 361a look at C<ev_set_io_collect_interval ()> to increase the amount of
362readiness notifications you get per iteration. 362readiness notifications you get per iteration.
363 363
364This backend maps C<EV_READ> to the C<readfds> set and C<EV_WRITE> to the
365C<writefds> set (and to work around Microsoft Windows bugs, also onto the
366C<exceptfds> set on that platform).
367
364=item C<EVBACKEND_POLL> (value 2, poll backend, available everywhere except on windows) 368=item C<EVBACKEND_POLL> (value 2, poll backend, available everywhere except on windows)
365 369
366And this is your standard poll(2) backend. It's more complicated 370And this is your standard poll(2) backend. It's more complicated
367than select, but handles sparse fds better and has no artificial 371than select, but handles sparse fds better and has no artificial
368limit on the number of fds you can use (except it will slow down 372limit on the number of fds you can use (except it will slow down
369considerably with a lot of inactive fds). It scales similarly to select, 373considerably with a lot of inactive fds). It scales similarly to select,
370i.e. O(total_fds). See the entry for C<EVBACKEND_SELECT>, above, for 374i.e. O(total_fds). See the entry for C<EVBACKEND_SELECT>, above, for
371performance tips. 375performance tips.
376
377This backend maps C<EV_READ> to C<POLLIN | POLLERR | POLLHUP>, and
378C<EV_WRITE> to C<POLLOUT | POLLERR | POLLHUP>.
372 379
373=item C<EVBACKEND_EPOLL> (value 4, Linux) 380=item C<EVBACKEND_EPOLL> (value 4, Linux)
374 381
375For few fds, this backend is a bit little slower than poll and select, 382For few fds, this backend is a bit little slower than poll and select,
376but it scales phenomenally better. While poll and select usually scale 383but it scales phenomenally better. While poll and select usually scale
395keep at least one watcher active per fd at all times. 402keep at least one watcher active per fd at all times.
396 403
397While nominally embeddable in other event loops, this feature is broken in 404While nominally embeddable in other event loops, this feature is broken in
398all kernel versions tested so far. 405all kernel versions tested so far.
399 406
407This backend maps C<EV_READ> and C<EV_WRITE> in the same way as
408C<EVBACKEND_POLL>.
409
400=item C<EVBACKEND_KQUEUE> (value 8, most BSD clones) 410=item C<EVBACKEND_KQUEUE> (value 8, most BSD clones)
401 411
402Kqueue deserves special mention, as at the time of this writing, it 412Kqueue deserves special mention, as at the time of this writing, it
403was broken on all BSDs except NetBSD (usually it doesn't work reliably 413was broken on all BSDs except NetBSD (usually it doesn't work reliably
404with anything but sockets and pipes, except on Darwin, where of course 414with anything but sockets and pipes, except on Darwin, where of course
425almost everywhere, you should only use it when you have a lot of sockets 435almost everywhere, you should only use it when you have a lot of sockets
426(for which it usually works), by embedding it into another event loop 436(for which it usually works), by embedding it into another event loop
427(e.g. C<EVBACKEND_SELECT> or C<EVBACKEND_POLL>) and using it only for 437(e.g. C<EVBACKEND_SELECT> or C<EVBACKEND_POLL>) and using it only for
428sockets. 438sockets.
429 439
440This backend maps C<EV_READ> into an C<EVFILT_READ> kevent with
441C<NOTE_EOF>, and C<EV_WRITE> into an C<EVFILT_WRITE> kevent with
442C<NOTE_EOF>.
443
430=item C<EVBACKEND_DEVPOLL> (value 16, Solaris 8) 444=item C<EVBACKEND_DEVPOLL> (value 16, Solaris 8)
431 445
432This is not implemented yet (and might never be, unless you send me an 446This is not implemented yet (and might never be, unless you send me an
433implementation). According to reports, C</dev/poll> only supports sockets 447implementation). According to reports, C</dev/poll> only supports sockets
434and is not embeddable, which would limit the usefulness of this backend 448and is not embeddable, which would limit the usefulness of this backend
449might perform better. 463might perform better.
450 464
451On the positive side, ignoring the spurious readiness notifications, this 465On the positive side, ignoring the spurious readiness notifications, this
452backend actually performed to specification in all tests and is fully 466backend actually performed to specification in all tests and is fully
453embeddable, which is a rare feat among the OS-specific backends. 467embeddable, which is a rare feat among the OS-specific backends.
468
469This backend maps C<EV_READ> and C<EV_WRITE> in the same way as
470C<EVBACKEND_POLL>.
454 471
455=item C<EVBACKEND_ALL> 472=item C<EVBACKEND_ALL>
456 473
457Try all backends (even potentially broken ones that wouldn't be tried 474Try all backends (even potentially broken ones that wouldn't be tried
458with C<EVFLAG_AUTO>). Since this is a mask, you can do stuff such as 475with C<EVFLAG_AUTO>). Since this is a mask, you can do stuff such as
573received events and started processing them. This timestamp does not 590received events and started processing them. This timestamp does not
574change as long as callbacks are being processed, and this is also the base 591change as long as callbacks are being processed, and this is also the base
575time used for relative timers. You can treat it as the timestamp of the 592time used for relative timers. You can treat it as the timestamp of the
576event occurring (or more correctly, libev finding out about it). 593event occurring (or more correctly, libev finding out about it).
577 594
595=item ev_now_update (loop)
596
597Establishes the current time by querying the kernel, updating the time
598returned by C<ev_now ()> in the progress. This is a costly operation and
599is usually done automatically within C<ev_loop ()>.
600
601This function is rarely useful, but when some event callback runs for a
602very long time without entering the event loop, updating libev's idea of
603the current time is a good idea.
604
605See also "The special problem of time updates" in the C<ev_timer> section.
606
578=item ev_loop (loop, int flags) 607=item ev_loop (loop, int flags)
579 608
580Finally, this is it, the event handler. This function usually is called 609Finally, this is it, the event handler. This function usually is called
581after you initialised all your watchers and you want to start handling 610after you initialised all your watchers and you want to start handling
582events. 611events.
604 633
605Here are the gory details of what C<ev_loop> does: 634Here are the gory details of what C<ev_loop> does:
606 635
607 - Before the first iteration, call any pending watchers. 636 - Before the first iteration, call any pending watchers.
608 * If EVFLAG_FORKCHECK was used, check for a fork. 637 * If EVFLAG_FORKCHECK was used, check for a fork.
609 - If a fork was detected, queue and call all fork watchers. 638 - If a fork was detected (by any means), queue and call all fork watchers.
610 - Queue and call all prepare watchers. 639 - Queue and call all prepare watchers.
611 - If we have been forked, recreate the kernel state. 640 - If we have been forked, detach and recreate the kernel state
641 as to not disturb the other process.
612 - Update the kernel state with all outstanding changes. 642 - Update the kernel state with all outstanding changes.
613 - Update the "event loop time". 643 - Update the "event loop time" (ev_now ()).
614 - Calculate for how long to sleep or block, if at all 644 - Calculate for how long to sleep or block, if at all
615 (active idle watchers, EVLOOP_NONBLOCK or not having 645 (active idle watchers, EVLOOP_NONBLOCK or not having
616 any active watchers at all will result in not sleeping). 646 any active watchers at all will result in not sleeping).
617 - Sleep if the I/O and timer collect interval say so. 647 - Sleep if the I/O and timer collect interval say so.
618 - Block the process, waiting for any events. 648 - Block the process, waiting for any events.
619 - Queue all outstanding I/O (fd) events. 649 - Queue all outstanding I/O (fd) events.
620 - Update the "event loop time" and do time jump handling. 650 - Update the "event loop time" (ev_now ()), and do time jump adjustments.
621 - Queue all outstanding timers. 651 - Queue all outstanding timers.
622 - Queue all outstanding periodics. 652 - Queue all outstanding periodics.
623 - If no events are pending now, queue all idle watchers. 653 - Unless any events are pending now, queue all idle watchers.
624 - Queue all check watchers. 654 - Queue all check watchers.
625 - Call all queued watchers in reverse order (i.e. check watchers first). 655 - Call all queued watchers in reverse order (i.e. check watchers first).
626 Signals and child watchers are implemented as I/O watchers, and will 656 Signals and child watchers are implemented as I/O watchers, and will
627 be handled here by queueing them when their watcher gets executed. 657 be handled here by queueing them when their watcher gets executed.
628 - If ev_unloop has been called, or EVLOOP_ONESHOT or EVLOOP_NONBLOCK 658 - If ev_unloop has been called, or EVLOOP_ONESHOT or EVLOOP_NONBLOCK
633anymore. 663anymore.
634 664
635 ... queue jobs here, make sure they register event watchers as long 665 ... queue jobs here, make sure they register event watchers as long
636 ... as they still have work to do (even an idle watcher will do..) 666 ... as they still have work to do (even an idle watcher will do..)
637 ev_loop (my_loop, 0); 667 ev_loop (my_loop, 0);
638 ... jobs done. yeah! 668 ... jobs done or somebody called unloop. yeah!
639 669
640=item ev_unloop (loop, how) 670=item ev_unloop (loop, how)
641 671
642Can be used to make a call to C<ev_loop> return early (but only after it 672Can be used to make a call to C<ev_loop> return early (but only after it
643has processed all outstanding events). The C<how> argument must be either 673has processed all outstanding events). The C<how> argument must be either
679=item ev_set_io_collect_interval (loop, ev_tstamp interval) 709=item ev_set_io_collect_interval (loop, ev_tstamp interval)
680 710
681=item ev_set_timeout_collect_interval (loop, ev_tstamp interval) 711=item ev_set_timeout_collect_interval (loop, ev_tstamp interval)
682 712
683These advanced functions influence the time that libev will spend waiting 713These advanced functions influence the time that libev will spend waiting
684for events. Both are by default C<0>, meaning that libev will try to 714for events. Both time intervals are by default C<0>, meaning that libev
685invoke timer/periodic callbacks and I/O callbacks with minimum latency. 715will try to invoke timer/periodic callbacks and I/O callbacks with minimum
716latency.
686 717
687Setting these to a higher value (the C<interval> I<must> be >= C<0>) 718Setting these to a higher value (the C<interval> I<must> be >= C<0>)
688allows libev to delay invocation of I/O and timer/periodic callbacks to 719allows libev to delay invocation of I/O and timer/periodic callbacks
689increase efficiency of loop iterations. 720to increase efficiency of loop iterations (or to increase power-saving
721opportunities).
690 722
691The background is that sometimes your program runs just fast enough to 723The background is that sometimes your program runs just fast enough to
692handle one (or very few) event(s) per loop iteration. While this makes 724handle one (or very few) event(s) per loop iteration. While this makes
693the program responsive, it also wastes a lot of CPU time to poll for new 725the program responsive, it also wastes a lot of CPU time to poll for new
694events, especially with backends like C<select ()> which have a high 726events, especially with backends like C<select ()> which have a high
709Many (busy) programs can usually benefit by setting the I/O collect 741Many (busy) programs can usually benefit by setting the I/O collect
710interval to a value near C<0.1> or so, which is often enough for 742interval to a value near C<0.1> or so, which is often enough for
711interactive servers (of course not for games), likewise for timeouts. It 743interactive servers (of course not for games), likewise for timeouts. It
712usually doesn't make much sense to set it to a lower value than C<0.01>, 744usually doesn't make much sense to set it to a lower value than C<0.01>,
713as this approaches the timing granularity of most systems. 745as this approaches the timing granularity of most systems.
746
747Setting the I<timeout collect interval> can improve the opportunity for
748saving power, as the program will "bundle" timer callback invocations that
749are "near" in time together, by delaying some, thus reducing the number of
750times the process sleeps and wakes up again. Another useful technique to
751reduce iterations/wake-ups is to use C<ev_periodic> watchers and make sure
752they fire on, say, one-second boundaries only.
714 753
715=item ev_loop_verify (loop) 754=item ev_loop_verify (loop)
716 755
717This function only does something when C<EV_VERIFY> support has been 756This function only does something when C<EV_VERIFY> support has been
718compiled in. It tries to go through all internal structures and checks 757compiled in. It tries to go through all internal structures and checks
984 { 1023 {
985 struct ev_io io; 1024 struct ev_io io;
986 int otherfd; 1025 int otherfd;
987 void *somedata; 1026 void *somedata;
988 struct whatever *mostinteresting; 1027 struct whatever *mostinteresting;
989 } 1028 };
1029
1030 ...
1031 struct my_io w;
1032 ev_io_init (&w.io, my_cb, fd, EV_READ);
990 1033
991And since your callback will be called with a pointer to the watcher, you 1034And since your callback will be called with a pointer to the watcher, you
992can cast it back to your own type: 1035can cast it back to your own type:
993 1036
994 static void my_cb (struct ev_loop *loop, struct ev_io *w_, int revents) 1037 static void my_cb (struct ev_loop *loop, struct ev_io *w_, int revents)
998 } 1041 }
999 1042
1000More interesting and less C-conformant ways of casting your callback type 1043More interesting and less C-conformant ways of casting your callback type
1001instead have been omitted. 1044instead have been omitted.
1002 1045
1003Another common scenario is having some data structure with multiple 1046Another common scenario is to use some data structure with multiple
1004watchers: 1047embedded watchers:
1005 1048
1006 struct my_biggy 1049 struct my_biggy
1007 { 1050 {
1008 int some_data; 1051 int some_data;
1009 ev_timer t1; 1052 ev_timer t1;
1010 ev_timer t2; 1053 ev_timer t2;
1011 } 1054 }
1012 1055
1013In this case getting the pointer to C<my_biggy> is a bit more complicated, 1056In this case getting the pointer to C<my_biggy> is a bit more
1014you need to use C<offsetof>: 1057complicated: Either you store the address of your C<my_biggy> struct
1058in the C<data> member of the watcher, or you need to use some pointer
1059arithmetic using C<offsetof> inside your watchers:
1015 1060
1016 #include <stddef.h> 1061 #include <stddef.h>
1017 1062
1018 static void 1063 static void
1019 t1_cb (EV_P_ struct ev_timer *w, int revents) 1064 t1_cb (EV_P_ struct ev_timer *w, int revents)
1124C<EVBACKEND_POLL>. 1169C<EVBACKEND_POLL>.
1125 1170
1126=head3 The special problem of SIGPIPE 1171=head3 The special problem of SIGPIPE
1127 1172
1128While not really specific to libev, it is easy to forget about SIGPIPE: 1173While not really specific to libev, it is easy to forget about SIGPIPE:
1129when reading from a pipe whose other end has been closed, your program 1174when writing to a pipe whose other end has been closed, your program gets
1130gets send a SIGPIPE, which, by default, aborts your program. For most 1175send a SIGPIPE, which, by default, aborts your program. For most programs
1131programs this is sensible behaviour, for daemons, this is usually 1176this is sensible behaviour, for daemons, this is usually undesirable.
1132undesirable.
1133 1177
1134So when you encounter spurious, unexplained daemon exits, make sure you 1178So when you encounter spurious, unexplained daemon exits, make sure you
1135ignore SIGPIPE (and maybe make sure you log the exit status of your daemon 1179ignore SIGPIPE (and maybe make sure you log the exit status of your daemon
1136somewhere, as that would have given you a big clue). 1180somewhere, as that would have given you a big clue).
1137 1181
1188times out after an hour and you reset your system clock to January last 1232times out after an hour and you reset your system clock to January last
1189year, it will still time out after (roughly) and hour. "Roughly" because 1233year, it will still time out after (roughly) and hour. "Roughly" because
1190detecting time jumps is hard, and some inaccuracies are unavoidable (the 1234detecting time jumps is hard, and some inaccuracies are unavoidable (the
1191monotonic clock option helps a lot here). 1235monotonic clock option helps a lot here).
1192 1236
1237The callback is guaranteed to be invoked only after its timeout has passed,
1238but if multiple timers become ready during the same loop iteration then
1239order of execution is undefined.
1240
1241=head3 The special problem of time updates
1242
1243Establishing the current time is a costly operation (it usually takes at
1244least two system calls): EV therefore updates its idea of the current
1245time only before and after C<ev_loop> polls for new events, which causes
1246a growing difference between C<ev_now ()> and C<ev_time ()> when handling
1247lots of events.
1248
1193The relative timeouts are calculated relative to the C<ev_now ()> 1249The relative timeouts are calculated relative to the C<ev_now ()>
1194time. This is usually the right thing as this timestamp refers to the time 1250time. This is usually the right thing as this timestamp refers to the time
1195of the event triggering whatever timeout you are modifying/starting. If 1251of the event triggering whatever timeout you are modifying/starting. If
1196you suspect event processing to be delayed and you I<need> to base the timeout 1252you suspect event processing to be delayed and you I<need> to base the
1197on the current time, use something like this to adjust for this: 1253timeout on the current time, use something like this to adjust for this:
1198 1254
1199 ev_timer_set (&timer, after + ev_now () - ev_time (), 0.); 1255 ev_timer_set (&timer, after + ev_now () - ev_time (), 0.);
1200 1256
1201The callback is guaranteed to be invoked only after its timeout has passed, 1257If the event loop is suspended for a long time, you can also force an
1202but if multiple timers become ready during the same loop iteration then 1258update of the time returned by C<ev_now ()> by calling C<ev_now_update
1203order of execution is undefined. 1259()>.
1204 1260
1205=head3 Watcher-Specific Functions and Data Members 1261=head3 Watcher-Specific Functions and Data Members
1206 1262
1207=over 4 1263=over 4
1208 1264
1559handler, you can override it easily by installing your own handler for 1615handler, you can override it easily by installing your own handler for
1560C<SIGCHLD> after initialising the default loop, and making sure the 1616C<SIGCHLD> after initialising the default loop, and making sure the
1561default loop never gets destroyed. You are encouraged, however, to use an 1617default loop never gets destroyed. You are encouraged, however, to use an
1562event-based approach to child reaping and thus use libev's support for 1618event-based approach to child reaping and thus use libev's support for
1563that, so other libev users can use C<ev_child> watchers freely. 1619that, so other libev users can use C<ev_child> watchers freely.
1620
1621=head3 Stopping the Child Watcher
1622
1623Currently, the child watcher never gets stopped, even when the
1624child terminates, so normally one needs to stop the watcher in the
1625callback. Future versions of libev might stop the watcher automatically
1626when a child exit is detected.
1564 1627
1565=head3 Watcher-Specific Functions and Data Members 1628=head3 Watcher-Specific Functions and Data Members
1566 1629
1567=over 4 1630=over 4
1568 1631
1662will be no polling. 1725will be no polling.
1663 1726
1664=head3 ABI Issues (Largefile Support) 1727=head3 ABI Issues (Largefile Support)
1665 1728
1666Libev by default (unless the user overrides this) uses the default 1729Libev by default (unless the user overrides this) uses the default
1667compilation environment, which means that on systems with optionally 1730compilation environment, which means that on systems with large file
1668disabled large file support, you get the 32 bit version of the stat 1731support disabled by default, you get the 32 bit version of the stat
1669structure. When using the library from programs that change the ABI to 1732structure. When using the library from programs that change the ABI to
1670use 64 bit file offsets the programs will fail. In that case you have to 1733use 64 bit file offsets the programs will fail. In that case you have to
1671compile libev with the same flags to get binary compatibility. This is 1734compile libev with the same flags to get binary compatibility. This is
1672obviously the case with any flags that change the ABI, but the problem is 1735obviously the case with any flags that change the ABI, but the problem is
1673most noticeably with ev_stat and large file support. 1736most noticeably disabled with ev_stat and large file support.
1737
1738The solution for this is to lobby your distribution maker to make large
1739file interfaces available by default (as e.g. FreeBSD does) and not
1740optional. Libev cannot simply switch on large file support because it has
1741to exchange stat structures with application programs compiled using the
1742default compilation environment.
1674 1743
1675=head3 Inotify 1744=head3 Inotify
1676 1745
1677When C<inotify (7)> support has been compiled into libev (generally only 1746When C<inotify (7)> support has been compiled into libev (generally only
1678available on Linux) and present at runtime, it will be used to speed up 1747available on Linux) and present at runtime, it will be used to speed up
2626libev. EV is developed together with libev. Apart from the EV core module, 2695libev. EV is developed together with libev. Apart from the EV core module,
2627there are additional modules that implement libev-compatible interfaces 2696there are additional modules that implement libev-compatible interfaces
2628to C<libadns> (C<EV::ADNS>), C<Net::SNMP> (C<Net::SNMP::EV>) and the 2697to C<libadns> (C<EV::ADNS>), C<Net::SNMP> (C<Net::SNMP::EV>) and the
2629C<libglib> event core (C<Glib::EV> and C<EV::Glib>). 2698C<libglib> event core (C<Glib::EV> and C<EV::Glib>).
2630 2699
2631It can be found and installed via CPAN, its homepage is found at 2700It can be found and installed via CPAN, its homepage is at
2632L<http://software.schmorp.de/pkg/EV>. 2701L<http://software.schmorp.de/pkg/EV>.
2702
2703=item Python
2704
2705Python bindings can be found at L<http://code.google.com/p/pyev/>. It
2706seems to be quite complete and well-documented. Note, however, that the
2707patch they require for libev is outright dangerous as it breaks the ABI
2708for everybody else, and therefore, should never be applied in an installed
2709libev (if python requires an incompatible ABI then it needs to embed
2710libev).
2633 2711
2634=item Ruby 2712=item Ruby
2635 2713
2636Tony Arcieri has written a ruby extension that offers access to a subset 2714Tony Arcieri has written a ruby extension that offers access to a subset
2637of the libev API and adds file handle abstractions, asynchronous DNS and 2715of the libev API and adds file handle abstractions, asynchronous DNS and
2639L<http://rev.rubyforge.org/>. 2717L<http://rev.rubyforge.org/>.
2640 2718
2641=item D 2719=item D
2642 2720
2643Leandro Lucarella has written a D language binding (F<ev.d>) for libev, to 2721Leandro Lucarella has written a D language binding (F<ev.d>) for libev, to
2644be found at L<http://git.llucax.com.ar/?p=software/ev.d.git;a=summary>. 2722be found at L<http://proj.llucax.com.ar/wiki/evd>.
2645 2723
2646=back 2724=back
2647 2725
2648 2726
2649=head1 MACRO MAGIC 2727=head1 MACRO MAGIC
3162 3240
3163=head1 THREADS AND COROUTINES 3241=head1 THREADS AND COROUTINES
3164 3242
3165=head2 THREADS 3243=head2 THREADS
3166 3244
3167Libev itself is completely thread-safe, but it uses no locking. This 3245Libev itself is thread-safe (unless the opposite is specifically
3246documented for a function), but it uses no locking itself. This means that
3168means that you can use as many loops as you want in parallel, as long as 3247you can use as many loops as you want in parallel, as long as only one
3169only one thread ever calls into one libev function with the same loop 3248thread ever calls into one libev function with the same loop parameter:
3170parameter. 3249libev guarentees that different event loops share no data structures that
3250need locking.
3171 3251
3172Or put differently: calls with different loop parameters can be done in 3252Or to put it differently: calls with different loop parameters can be done
3173parallel from multiple threads, calls with the same loop parameter must be 3253concurrently from multiple threads, calls with the same loop parameter
3174done serially (but can be done from different threads, as long as only one 3254must be done serially (but can be done from different threads, as long as
3175thread ever is inside a call at any point in time, e.g. by using a mutex 3255only one thread ever is inside a call at any point in time, e.g. by using
3176per loop). 3256a mutex per loop).
3177 3257
3178If you want to know which design is best for your problem, then I cannot 3258Specifically to support threads (and signal handlers), libev implements
3179help you but by giving some generic advice: 3259so-called C<ev_async> watchers, which allow some limited form of
3260concurrency on the same event loop.
3261
3262If you want to know which design (one loop, locking, or multiple loops
3263without or something else still) is best for your problem, then I cannot
3264help you. I can give some generic advice however:
3180 3265
3181=over 4 3266=over 4
3182 3267
3183=item * most applications have a main thread: use the default libev loop 3268=item * most applications have a main thread: use the default libev loop
3184in that thread, or create a separate thread running only the default loop. 3269in that thread, or create a separate thread running only the default loop.
3198better than you currently do :-) 3283better than you currently do :-)
3199 3284
3200=item * often you need to talk to some other thread which blocks in the 3285=item * often you need to talk to some other thread which blocks in the
3201event loop - C<ev_async> watchers can be used to wake them up from other 3286event loop - C<ev_async> watchers can be used to wake them up from other
3202threads safely (or from signal contexts...). 3287threads safely (or from signal contexts...).
3288
3289=item * some watcher types are only supported in the default loop - use
3290C<ev_async> watchers to tell your other loops about any such events.
3203 3291
3204=back 3292=back
3205 3293
3206=head2 COROUTINES 3294=head2 COROUTINES
3207 3295
3210coroutines (e.g. you can call C<ev_loop> on the same loop from two 3298coroutines (e.g. you can call C<ev_loop> on the same loop from two
3211different coroutines and switch freely between both coroutines running the 3299different coroutines and switch freely between both coroutines running the
3212loop, as long as you don't confuse yourself). The only exception is that 3300loop, as long as you don't confuse yourself). The only exception is that
3213you must not do this from C<ev_periodic> reschedule callbacks. 3301you must not do this from C<ev_periodic> reschedule callbacks.
3214 3302
3215Care has been invested into making sure that libev does not keep local 3303Care has been taken to ensure that libev does not keep local state inside
3216state inside C<ev_loop>, and other calls do not usually allow coroutine 3304C<ev_loop>, and other calls do not usually allow coroutine switches.
3217switches.
3218 3305
3219 3306
3220=head1 COMPLEXITIES 3307=head1 COMPLEXITIES
3221 3308
3222In this section the complexities of (many of) the algorithms used inside 3309In this section the complexities of (many of) the algorithms used inside
3317more than a hundred or so sockets, then likely it needs to use a totally 3404more than a hundred or so sockets, then likely it needs to use a totally
3318different implementation for windows, as libev offers the POSIX readiness 3405different implementation for windows, as libev offers the POSIX readiness
3319notification model, which cannot be implemented efficiently on windows 3406notification model, which cannot be implemented efficiently on windows
3320(Microsoft monopoly games). 3407(Microsoft monopoly games).
3321 3408
3409A typical way to use libev under windows is to embed it (see the embedding
3410section for details) and use the following F<evwrap.h> header file instead
3411of F<ev.h>:
3412
3413 #define EV_STANDALONE /* keeps ev from requiring config.h */
3414 #define EV_SELECT_IS_WINSOCKET 1 /* configure libev for windows select */
3415
3416 #include "ev.h"
3417
3418And compile the following F<evwrap.c> file into your project (make sure
3419you do I<not> compile the F<ev.c> or any other embedded soruce files!):
3420
3421 #include "evwrap.h"
3422 #include "ev.c"
3423
3322=over 4 3424=over 4
3323 3425
3324=item The winsocket select function 3426=item The winsocket select function
3325 3427
3326The winsocket C<select> function doesn't follow POSIX in that it 3428The winsocket C<select> function doesn't follow POSIX in that it
3327requires socket I<handles> and not socket I<file descriptors> (it is 3429requires socket I<handles> and not socket I<file descriptors> (it is
3328also extremely buggy). This makes select very inefficient, and also 3430also extremely buggy). This makes select very inefficient, and also
3329requires a mapping from file descriptors to socket handles. See the 3431requires a mapping from file descriptors to socket handles (the Microsoft
3432C runtime provides the function C<_open_osfhandle> for this). See the
3330discussion of the C<EV_SELECT_USE_FD_SET>, C<EV_SELECT_IS_WINSOCKET> and 3433discussion of the C<EV_SELECT_USE_FD_SET>, C<EV_SELECT_IS_WINSOCKET> and
3331C<EV_FD_TO_WIN32_HANDLE> preprocessor symbols for more info. 3434C<EV_FD_TO_WIN32_HANDLE> preprocessor symbols for more info.
3332 3435
3333The configuration for a "naked" win32 using the Microsoft runtime 3436The configuration for a "naked" win32 using the Microsoft runtime
3334libraries and raw winsocket select is: 3437libraries and raw winsocket select is:
3374In addition to a working ISO-C implementation, libev relies on a few 3477In addition to a working ISO-C implementation, libev relies on a few
3375additional extensions: 3478additional extensions:
3376 3479
3377=over 4 3480=over 4
3378 3481
3482=item C<void (*)(ev_watcher_type *, int revents)> must have compatible
3483calling conventions regardless of C<ev_watcher_type *>.
3484
3485Libev assumes not only that all watcher pointers have the same internal
3486structure (guaranteed by POSIX but not by ISO C for example), but it also
3487assumes that the same (machine) code can be used to call any watcher
3488callback: The watcher callbacks have different type signatures, but libev
3489calls them using an C<ev_watcher *> internally.
3490
3379=item C<sig_atomic_t volatile> must be thread-atomic as well 3491=item C<sig_atomic_t volatile> must be thread-atomic as well
3380 3492
3381The type C<sig_atomic_t volatile> (or whatever is defined as 3493The type C<sig_atomic_t volatile> (or whatever is defined as
3382C<EV_ATOMIC_T>) must be atomic w.r.t. accesses from different 3494C<EV_ATOMIC_T>) must be atomic w.r.t. accesses from different
3383threads. This is not part of the specification for C<sig_atomic_t>, but is 3495threads. This is not part of the specification for C<sig_atomic_t>, but is

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines