… | |
… | |
856 | more often than 100 times per second: |
856 | more often than 100 times per second: |
857 | |
857 | |
858 | ev_set_timeout_collect_interval (EV_DEFAULT_UC_ 0.1); |
858 | ev_set_timeout_collect_interval (EV_DEFAULT_UC_ 0.1); |
859 | ev_set_io_collect_interval (EV_DEFAULT_UC_ 0.01); |
859 | ev_set_io_collect_interval (EV_DEFAULT_UC_ 0.01); |
860 | |
860 | |
|
|
861 | =item ev_invoke_pending (loop) |
|
|
862 | |
|
|
863 | This call will simply invoke all pending watchers while resetting their |
|
|
864 | pending state. Normally, C<ev_loop> does this automatically when required, |
|
|
865 | but when overriding the invoke callback this call comes handy. |
|
|
866 | |
|
|
867 | =item ev_set_invoke_pending_cb (loop, void (*invoke_pending_cb)(EV_P)) |
|
|
868 | |
|
|
869 | This overrides the invoke pending functionality of the loop: Instead of |
|
|
870 | invoking all pending watchers when there are any, C<ev_loop> will call |
|
|
871 | this callback instead. This is useful, for example, when you want to |
|
|
872 | invoke the actual watchers inside another context (another thread etc.). |
|
|
873 | |
|
|
874 | If you want to reset the callback, use C<ev_invoke_pending> as new |
|
|
875 | callback. |
|
|
876 | |
|
|
877 | =item ev_set_loop_release_cb (loop, void (*release)(EV_P), void (*acquire)(EV_P)) |
|
|
878 | |
|
|
879 | Sometimes you want to share the same loop between multiple threads. This |
|
|
880 | can be done relatively simply by putting mutex_lock/unlock calls around |
|
|
881 | each call to a libev function. |
|
|
882 | |
|
|
883 | However, C<ev_loop> can run an indefinite time, so it is not feasible to |
|
|
884 | wait for it to return. One way around this is to wake up the loop via |
|
|
885 | C<ev_unloop> and C<av_async_send>, another way is to set these I<release> |
|
|
886 | and I<acquire> callbacks on the loop. |
|
|
887 | |
|
|
888 | When set, then C<release> will be called just before the thread is |
|
|
889 | suspended waiting for new events, and C<acquire> is called just |
|
|
890 | afterwards. |
|
|
891 | |
|
|
892 | Ideally, C<release> will just call your mutex_unlock function, and |
|
|
893 | C<acquire> will just call the mutex_lock function again. |
|
|
894 | |
|
|
895 | =item ev_set_userdata (loop, void *data) |
|
|
896 | |
|
|
897 | =item ev_userdata (loop) |
|
|
898 | |
|
|
899 | Set and retrieve a single C<void *> associated with a loop. When |
|
|
900 | C<ev_set_userdata> has never been called, then C<ev_userdata> returns |
|
|
901 | C<0.> |
|
|
902 | |
|
|
903 | These two functions can be used to associate arbitrary data with a loop, |
|
|
904 | and are intended solely for the C<invoke_pending_cb>, C<release> and |
|
|
905 | C<acquire> callbacks described above, but of course can be (ab-)used for |
|
|
906 | any other purpose as well. |
|
|
907 | |
861 | =item ev_loop_verify (loop) |
908 | =item ev_loop_verify (loop) |
862 | |
909 | |
863 | This function only does something when C<EV_VERIFY> support has been |
910 | This function only does something when C<EV_VERIFY> support has been |
864 | compiled in, which is the default for non-minimal builds. It tries to go |
911 | compiled in, which is the default for non-minimal builds. It tries to go |
865 | through all internal structures and checks them for validity. If anything |
912 | through all internal structures and checks them for validity. If anything |
… | |
… | |
3676 | speed (but with the full API), define this symbol to C<1>. Currently this |
3723 | speed (but with the full API), define this symbol to C<1>. Currently this |
3677 | is used to override some inlining decisions, saves roughly 30% code size |
3724 | is used to override some inlining decisions, saves roughly 30% code size |
3678 | on amd64. It also selects a much smaller 2-heap for timer management over |
3725 | on amd64. It also selects a much smaller 2-heap for timer management over |
3679 | the default 4-heap. |
3726 | the default 4-heap. |
3680 | |
3727 | |
3681 | You can save even more by disabling watcher types you do not need and |
3728 | You can save even more by disabling watcher types you do not need |
3682 | setting C<EV_MAXPRI> == C<EV_MINPRI>. |
3729 | and setting C<EV_MAXPRI> == C<EV_MINPRI>. Also, disabling C<assert> |
|
|
3730 | (C<-DNDEBUG>) will usually reduce code size a lot. |
|
|
3731 | |
|
|
3732 | Defining C<EV_MINIMAL> to C<2> will additionally reduce the core API to |
|
|
3733 | provide a bare-bones event library. See C<ev.h> for details on what parts |
|
|
3734 | of the API are still available, and do not complain if this subset changes |
|
|
3735 | over time. |
3683 | |
3736 | |
3684 | =item EV_PID_HASHSIZE |
3737 | =item EV_PID_HASHSIZE |
3685 | |
3738 | |
3686 | C<ev_child> watchers use a small hash table to distribute workload by |
3739 | C<ev_child> watchers use a small hash table to distribute workload by |
3687 | pid. The default size is C<16> (or C<1> with C<EV_MINIMAL>), usually more |
3740 | pid. The default size is C<16> (or C<1> with C<EV_MINIMAL>), usually more |
… | |
… | |
3873 | default loop and triggering an C<ev_async> watcher from the default loop |
3926 | default loop and triggering an C<ev_async> watcher from the default loop |
3874 | watcher callback into the event loop interested in the signal. |
3927 | watcher callback into the event loop interested in the signal. |
3875 | |
3928 | |
3876 | =back |
3929 | =back |
3877 | |
3930 | |
|
|
3931 | =head4 THREAD LOCKING EXAMPLE |
|
|
3932 | |
3878 | =head3 COROUTINES |
3933 | =head3 COROUTINES |
3879 | |
3934 | |
3880 | Libev is very accommodating to coroutines ("cooperative threads"): |
3935 | Libev is very accommodating to coroutines ("cooperative threads"): |
3881 | libev fully supports nesting calls to its functions from different |
3936 | libev fully supports nesting calls to its functions from different |
3882 | coroutines (e.g. you can call C<ev_loop> on the same loop from two |
3937 | coroutines (e.g. you can call C<ev_loop> on the same loop from two |