… | |
… | |
256 | |
256 | |
257 | An event loop is described by a C<struct ev_loop *>. The library knows two |
257 | An event loop is described by a C<struct ev_loop *>. The library knows two |
258 | types of such loops, the I<default> loop, which supports signals and child |
258 | types of such loops, the I<default> loop, which supports signals and child |
259 | events, and dynamically created loops which do not. |
259 | events, and dynamically created loops which do not. |
260 | |
260 | |
261 | If you use threads, a common model is to run the default event loop |
|
|
262 | in your main thread (or in a separate thread) and for each thread you |
|
|
263 | create, you also create another event loop. Libev itself does no locking |
|
|
264 | whatsoever, so if you mix calls to the same event loop in different |
|
|
265 | threads, make sure you lock (this is usually a bad idea, though, even if |
|
|
266 | done correctly, because it's hideous and inefficient). |
|
|
267 | |
|
|
268 | =over 4 |
261 | =over 4 |
269 | |
262 | |
270 | =item struct ev_loop *ev_default_loop (unsigned int flags) |
263 | =item struct ev_loop *ev_default_loop (unsigned int flags) |
271 | |
264 | |
272 | This will initialise the default event loop if it hasn't been initialised |
265 | This will initialise the default event loop if it hasn't been initialised |
… | |
… | |
358 | For few fds, this backend is a bit little slower than poll and select, |
351 | For few fds, this backend is a bit little slower than poll and select, |
359 | but it scales phenomenally better. While poll and select usually scale |
352 | but it scales phenomenally better. While poll and select usually scale |
360 | like O(total_fds) where n is the total number of fds (or the highest fd), |
353 | like O(total_fds) where n is the total number of fds (or the highest fd), |
361 | epoll scales either O(1) or O(active_fds). The epoll design has a number |
354 | epoll scales either O(1) or O(active_fds). The epoll design has a number |
362 | of shortcomings, such as silently dropping events in some hard-to-detect |
355 | of shortcomings, such as silently dropping events in some hard-to-detect |
363 | cases and rewiring a syscall per fd change, no fork support and bad |
356 | cases and requiring a syscall per fd change, no fork support and bad |
364 | support for dup. |
357 | support for dup. |
365 | |
358 | |
366 | While stopping, setting and starting an I/O watcher in the same iteration |
359 | While stopping, setting and starting an I/O watcher in the same iteration |
367 | will result in some caching, there is still a syscall per such incident |
360 | will result in some caching, there is still a syscall per such incident |
368 | (because the fd could point to a different file description now), so its |
361 | (because the fd could point to a different file description now), so its |
… | |
… | |
2633 | =item C<EV_DEFAULT>, C<EV_DEFAULT_> |
2626 | =item C<EV_DEFAULT>, C<EV_DEFAULT_> |
2634 | |
2627 | |
2635 | Similar to the other two macros, this gives you the value of the default |
2628 | Similar to the other two macros, this gives you the value of the default |
2636 | loop, if multiple loops are supported ("ev loop default"). |
2629 | loop, if multiple loops are supported ("ev loop default"). |
2637 | |
2630 | |
|
|
2631 | =item C<EV_DEFAULT_UC>, C<EV_DEFAULT_UC_> |
|
|
2632 | |
|
|
2633 | Usage identical to C<EV_DEFAULT> and C<EV_DEFAULT_>, but requires that the |
|
|
2634 | default loop has been initialised (C<UC> == unchecked). Their behaviour |
|
|
2635 | is undefined when the default loop has not been initialised by a previous |
|
|
2636 | execution of C<EV_DEFAULT>, C<EV_DEFAULT_> or C<ev_default_init (...)>. |
|
|
2637 | |
|
|
2638 | It is often prudent to use C<EV_DEFAULT> when initialising the first |
|
|
2639 | watcher in a function but use C<EV_DEFAULT_UC> afterwards. |
|
|
2640 | |
2638 | =back |
2641 | =back |
2639 | |
2642 | |
2640 | Example: Declare and initialise a check watcher, utilising the above |
2643 | Example: Declare and initialise a check watcher, utilising the above |
2641 | macros so it will work regardless of whether multiple loops are supported |
2644 | macros so it will work regardless of whether multiple loops are supported |
2642 | or not. |
2645 | or not. |
… | |
… | |
2737 | |
2740 | |
2738 | libev.m4 |
2741 | libev.m4 |
2739 | |
2742 | |
2740 | =head2 PREPROCESSOR SYMBOLS/MACROS |
2743 | =head2 PREPROCESSOR SYMBOLS/MACROS |
2741 | |
2744 | |
2742 | Libev can be configured via a variety of preprocessor symbols you have to define |
2745 | Libev can be configured via a variety of preprocessor symbols you have to |
2743 | before including any of its files. The default is not to build for multiplicity |
2746 | define before including any of its files. The default in the absense of |
2744 | and only include the select backend. |
2747 | autoconf is noted for every option. |
2745 | |
2748 | |
2746 | =over 4 |
2749 | =over 4 |
2747 | |
2750 | |
2748 | =item EV_STANDALONE |
2751 | =item EV_STANDALONE |
2749 | |
2752 | |
… | |
… | |
2775 | =item EV_USE_NANOSLEEP |
2778 | =item EV_USE_NANOSLEEP |
2776 | |
2779 | |
2777 | If defined to be C<1>, libev will assume that C<nanosleep ()> is available |
2780 | If defined to be C<1>, libev will assume that C<nanosleep ()> is available |
2778 | and will use it for delays. Otherwise it will use C<select ()>. |
2781 | and will use it for delays. Otherwise it will use C<select ()>. |
2779 | |
2782 | |
|
|
2783 | =item EV_USE_EVENTFD |
|
|
2784 | |
|
|
2785 | If defined to be C<1>, then libev will assume that C<eventfd ()> is |
|
|
2786 | available and will probe for kernel support at runtime. This will improve |
|
|
2787 | C<ev_signal> and C<ev_async> performance and reduce resource consumption. |
|
|
2788 | If undefined, it will be enabled if the headers indicate GNU/Linux + Glibc |
|
|
2789 | 2.7 or newer, otherwise disabled. |
|
|
2790 | |
2780 | =item EV_USE_SELECT |
2791 | =item EV_USE_SELECT |
2781 | |
2792 | |
2782 | If undefined or defined to be C<1>, libev will compile in support for the |
2793 | If undefined or defined to be C<1>, libev will compile in support for the |
2783 | C<select>(2) backend. No attempt at autodetection will be done: if no |
2794 | C<select>(2) backend. No attempt at autodetection will be done: if no |
2784 | other method takes over, select will be it. Otherwise the select backend |
2795 | other method takes over, select will be it. Otherwise the select backend |
… | |
… | |
2820 | |
2831 | |
2821 | =item EV_USE_EPOLL |
2832 | =item EV_USE_EPOLL |
2822 | |
2833 | |
2823 | If defined to be C<1>, libev will compile in support for the Linux |
2834 | If defined to be C<1>, libev will compile in support for the Linux |
2824 | C<epoll>(7) backend. Its availability will be detected at runtime, |
2835 | C<epoll>(7) backend. Its availability will be detected at runtime, |
2825 | otherwise another method will be used as fallback. This is the |
2836 | otherwise another method will be used as fallback. This is the preferred |
2826 | preferred backend for GNU/Linux systems. |
2837 | backend for GNU/Linux systems. If undefined, it will be enabled if the |
|
|
2838 | headers indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled. |
2827 | |
2839 | |
2828 | =item EV_USE_KQUEUE |
2840 | =item EV_USE_KQUEUE |
2829 | |
2841 | |
2830 | If defined to be C<1>, libev will compile in support for the BSD style |
2842 | If defined to be C<1>, libev will compile in support for the BSD style |
2831 | C<kqueue>(2) backend. Its actual availability will be detected at runtime, |
2843 | C<kqueue>(2) backend. Its actual availability will be detected at runtime, |
… | |
… | |
2850 | |
2862 | |
2851 | =item EV_USE_INOTIFY |
2863 | =item EV_USE_INOTIFY |
2852 | |
2864 | |
2853 | If defined to be C<1>, libev will compile in support for the Linux inotify |
2865 | If defined to be C<1>, libev will compile in support for the Linux inotify |
2854 | interface to speed up C<ev_stat> watchers. Its actual availability will |
2866 | interface to speed up C<ev_stat> watchers. Its actual availability will |
2855 | be detected at runtime. |
2867 | be detected at runtime. If undefined, it will be enabled if the headers |
|
|
2868 | indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled. |
2856 | |
2869 | |
2857 | =item EV_ATOMIC_T |
2870 | =item EV_ATOMIC_T |
2858 | |
2871 | |
2859 | Libev requires an integer type (suitable for storing C<0> or C<1>) whose |
2872 | Libev requires an integer type (suitable for storing C<0> or C<1>) whose |
2860 | access is atomic with respect to other threads or signal contexts. No such |
2873 | access is atomic with respect to other threads or signal contexts. No such |
… | |
… | |
3047 | |
3060 | |
3048 | #include "ev_cpp.h" |
3061 | #include "ev_cpp.h" |
3049 | #include "ev.c" |
3062 | #include "ev.c" |
3050 | |
3063 | |
3051 | |
3064 | |
|
|
3065 | =head1 THREADS AND COROUTINES |
|
|
3066 | |
|
|
3067 | =head2 THREADS |
|
|
3068 | |
|
|
3069 | Libev itself is completely threadsafe, but it uses no locking. This |
|
|
3070 | means that you can use as many loops as you want in parallel, as long as |
|
|
3071 | only one thread ever calls into one libev function with the same loop |
|
|
3072 | parameter. |
|
|
3073 | |
|
|
3074 | Or put differently: calls with different loop parameters can be done in |
|
|
3075 | parallel from multiple threads, calls with the same loop parameter must be |
|
|
3076 | done serially (but can be done from different threads, as long as only one |
|
|
3077 | thread ever is inside a call at any point in time, e.g. by using a mutex |
|
|
3078 | per loop). |
|
|
3079 | |
|
|
3080 | If you want to know which design is best for your problem, then I cannot |
|
|
3081 | help you but by giving some generic advice: |
|
|
3082 | |
|
|
3083 | =over 4 |
|
|
3084 | |
|
|
3085 | =item * most applications have a main thread: use the default libev loop |
|
|
3086 | in that thread, or create a seperate thread running only the default loop. |
|
|
3087 | |
|
|
3088 | This helps integrating other libraries or software modules that use libev |
|
|
3089 | themselves and don't care/know about threading. |
|
|
3090 | |
|
|
3091 | =item * one loop per thread is usually a good model. |
|
|
3092 | |
|
|
3093 | Doing this is almost never wrong, sometimes a better-performance model |
|
|
3094 | exists, but it is always a good start. |
|
|
3095 | |
|
|
3096 | =item * other models exist, such as the leader/follower pattern, where one |
|
|
3097 | loop is handed through multiple threads in a kind of round-robbin fashion. |
|
|
3098 | |
|
|
3099 | Chosing a model is hard - look around, learn, know that usually you cna do |
|
|
3100 | better than you currently do :-) |
|
|
3101 | |
|
|
3102 | =item * often you need to talk to some other thread which blocks in the |
|
|
3103 | event loop - C<ev_async> watchers can be used to wake them up from other |
|
|
3104 | threads safely (or from signal contexts...). |
|
|
3105 | |
|
|
3106 | =back |
|
|
3107 | |
|
|
3108 | =head2 COROUTINES |
|
|
3109 | |
|
|
3110 | Libev is much more accomodating to coroutines ("cooperative threads"): |
|
|
3111 | libev fully supports nesting calls to it's functions from different |
|
|
3112 | coroutines (e.g. you can call C<ev_loop> on the same loop from two |
|
|
3113 | different coroutines and switch freely between both coroutines running the |
|
|
3114 | loop, as long as you don't confuse yourself). The only exception is that |
|
|
3115 | you must not do this from C<ev_periodic> reschedule callbacks. |
|
|
3116 | |
|
|
3117 | Care has been invested into making sure that libev does not keep local |
|
|
3118 | state inside C<ev_loop>, and other calls do not usually allow coroutine |
|
|
3119 | switches. |
|
|
3120 | |
|
|
3121 | |
3052 | =head1 COMPLEXITIES |
3122 | =head1 COMPLEXITIES |
3053 | |
3123 | |
3054 | In this section the complexities of (many of) the algorithms used inside |
3124 | In this section the complexities of (many of) the algorithms used inside |
3055 | libev will be explained. For complexity discussions about backends see the |
3125 | libev will be explained. For complexity discussions about backends see the |
3056 | documentation for C<ev_default_init>. |
3126 | documentation for C<ev_default_init>. |