… | |
… | |
567 | |
567 | |
568 | It scales in the same way as the epoll backend, but the interface to the |
568 | It scales in the same way as the epoll backend, but the interface to the |
569 | kernel is more efficient (which says nothing about its actual speed, of |
569 | kernel is more efficient (which says nothing about its actual speed, of |
570 | course). While stopping, setting and starting an I/O watcher does never |
570 | course). While stopping, setting and starting an I/O watcher does never |
571 | cause an extra system call as with C<EVBACKEND_EPOLL>, it still adds up to |
571 | cause an extra system call as with C<EVBACKEND_EPOLL>, it still adds up to |
572 | two event changes per incident. Support for C<fork ()> is very bad (but |
572 | two event changes per incident. Support for C<fork ()> is very bad (you |
573 | sane, unlike epoll) and it drops fds silently in similarly hard-to-detect |
573 | might have to leak fd's on fork, but it's more sane than epoll) and it |
574 | cases |
574 | drops fds silently in similarly hard-to-detect cases |
575 | |
575 | |
576 | This backend usually performs well under most conditions. |
576 | This backend usually performs well under most conditions. |
577 | |
577 | |
578 | While nominally embeddable in other event loops, this doesn't work |
578 | While nominally embeddable in other event loops, this doesn't work |
579 | everywhere, so you might need to test for this. And since it is broken |
579 | everywhere, so you might need to test for this. And since it is broken |
… | |
… | |
792 | without a previous call to C<ev_suspend>. |
792 | without a previous call to C<ev_suspend>. |
793 | |
793 | |
794 | Calling C<ev_suspend>/C<ev_resume> has the side effect of updating the |
794 | Calling C<ev_suspend>/C<ev_resume> has the side effect of updating the |
795 | event loop time (see C<ev_now_update>). |
795 | event loop time (see C<ev_now_update>). |
796 | |
796 | |
797 | =item ev_run (loop, int flags) |
797 | =item bool ev_run (loop, int flags) |
798 | |
798 | |
799 | Finally, this is it, the event handler. This function usually is called |
799 | Finally, this is it, the event handler. This function usually is called |
800 | after you have initialised all your watchers and you want to start |
800 | after you have initialised all your watchers and you want to start |
801 | handling events. It will ask the operating system for any new events, call |
801 | handling events. It will ask the operating system for any new events, call |
802 | the watcher callbacks, an then repeat the whole process indefinitely: This |
802 | the watcher callbacks, and then repeat the whole process indefinitely: This |
803 | is why event loops are called I<loops>. |
803 | is why event loops are called I<loops>. |
804 | |
804 | |
805 | If the flags argument is specified as C<0>, it will keep handling events |
805 | If the flags argument is specified as C<0>, it will keep handling events |
806 | until either no event watchers are active anymore or C<ev_break> was |
806 | until either no event watchers are active anymore or C<ev_break> was |
807 | called. |
807 | called. |
|
|
808 | |
|
|
809 | The return value is false if there are no more active watchers (which |
|
|
810 | usually means "all jobs done" or "deadlock"), and true in all other cases |
|
|
811 | (which usually means " you should call C<ev_run> again"). |
808 | |
812 | |
809 | Please note that an explicit C<ev_break> is usually better than |
813 | Please note that an explicit C<ev_break> is usually better than |
810 | relying on all watchers to be stopped when deciding when a program has |
814 | relying on all watchers to be stopped when deciding when a program has |
811 | finished (especially in interactive programs), but having a program |
815 | finished (especially in interactive programs), but having a program |
812 | that automatically loops as long as it has to and no longer by virtue |
816 | that automatically loops as long as it has to and no longer by virtue |
813 | of relying on its watchers stopping correctly, that is truly a thing of |
817 | of relying on its watchers stopping correctly, that is truly a thing of |
814 | beauty. |
818 | beauty. |
815 | |
819 | |
816 | This function is also I<mostly> exception-safe - you can break out of |
820 | This function is I<mostly> exception-safe - you can break out of a |
817 | a C<ev_run> call by calling C<longjmp> in a callback, throwing a C++ |
821 | C<ev_run> call by calling C<longjmp> in a callback, throwing a C++ |
818 | exception and so on. This does not decrement the C<ev_depth> value, nor |
822 | exception and so on. This does not decrement the C<ev_depth> value, nor |
819 | will it clear any outstanding C<EVBREAK_ONE> breaks. |
823 | will it clear any outstanding C<EVBREAK_ONE> breaks. |
820 | |
824 | |
821 | A flags value of C<EVRUN_NOWAIT> will look for new events, will handle |
825 | A flags value of C<EVRUN_NOWAIT> will look for new events, will handle |
822 | those events and any already outstanding ones, but will not wait and |
826 | those events and any already outstanding ones, but will not wait and |
… | |
… | |
4616 | #define EV_USE_POLL 1 |
4620 | #define EV_USE_POLL 1 |
4617 | #define EV_CHILD_ENABLE 1 |
4621 | #define EV_CHILD_ENABLE 1 |
4618 | #define EV_ASYNC_ENABLE 1 |
4622 | #define EV_ASYNC_ENABLE 1 |
4619 | |
4623 | |
4620 | The actual value is a bitset, it can be a combination of the following |
4624 | The actual value is a bitset, it can be a combination of the following |
4621 | values: |
4625 | values (by default, all of these are enabled): |
4622 | |
4626 | |
4623 | =over 4 |
4627 | =over 4 |
4624 | |
4628 | |
4625 | =item C<1> - faster/larger code |
4629 | =item C<1> - faster/larger code |
4626 | |
4630 | |
… | |
… | |
4630 | code size by roughly 30% on amd64). |
4634 | code size by roughly 30% on amd64). |
4631 | |
4635 | |
4632 | When optimising for size, use of compiler flags such as C<-Os> with |
4636 | When optimising for size, use of compiler flags such as C<-Os> with |
4633 | gcc is recommended, as well as C<-DNDEBUG>, as libev contains a number of |
4637 | gcc is recommended, as well as C<-DNDEBUG>, as libev contains a number of |
4634 | assertions. |
4638 | assertions. |
|
|
4639 | |
|
|
4640 | The default is off when C<__OPTIMIZE_SIZE__> is defined by your compiler |
|
|
4641 | (e.g. gcc with C<-Os>). |
4635 | |
4642 | |
4636 | =item C<2> - faster/larger data structures |
4643 | =item C<2> - faster/larger data structures |
4637 | |
4644 | |
4638 | Replaces the small 2-heap for timer management by a faster 4-heap, larger |
4645 | Replaces the small 2-heap for timer management by a faster 4-heap, larger |
4639 | hash table sizes and so on. This will usually further increase code size |
4646 | hash table sizes and so on. This will usually further increase code size |
4640 | and can additionally have an effect on the size of data structures at |
4647 | and can additionally have an effect on the size of data structures at |
4641 | runtime. |
4648 | runtime. |
|
|
4649 | |
|
|
4650 | The default is off when C<__OPTIMIZE_SIZE__> is defined by your compiler |
|
|
4651 | (e.g. gcc with C<-Os>). |
4642 | |
4652 | |
4643 | =item C<4> - full API configuration |
4653 | =item C<4> - full API configuration |
4644 | |
4654 | |
4645 | This enables priorities (sets C<EV_MAXPRI>=2 and C<EV_MINPRI>=-2), and |
4655 | This enables priorities (sets C<EV_MAXPRI>=2 and C<EV_MINPRI>=-2), and |
4646 | enables multiplicity (C<EV_MULTIPLICITY>=1). |
4656 | enables multiplicity (C<EV_MULTIPLICITY>=1). |