… | |
… | |
418 | starting a watcher (without re-setting it) also usually doesn't cause |
418 | starting a watcher (without re-setting it) also usually doesn't cause |
419 | extra overhead. A fork can both result in spurious notifications as well |
419 | extra overhead. A fork can both result in spurious notifications as well |
420 | as in libev having to destroy and recreate the epoll object, which can |
420 | as in libev having to destroy and recreate the epoll object, which can |
421 | take considerable time and thus should be avoided. |
421 | take considerable time and thus should be avoided. |
422 | |
422 | |
423 | All this means that, in practise, C<EVBACKEND_SELECT> can be as fast or |
423 | All this means that, in practice, C<EVBACKEND_SELECT> can be as fast or |
424 | faster then epoll for maybe up to a hundred file descriptors, depending on |
424 | faster than epoll for maybe up to a hundred file descriptors, depending on |
425 | the usage. So sad. |
425 | the usage. So sad. |
426 | |
426 | |
427 | While nominally embeddable in other event loops, this feature is broken in |
427 | While nominally embeddable in other event loops, this feature is broken in |
428 | all kernel versions tested so far. |
428 | all kernel versions tested so far. |
429 | |
429 | |
… | |
… | |
1419 | else |
1419 | else |
1420 | { |
1420 | { |
1421 | // callback was invoked, but there was some activity, re-arm |
1421 | // callback was invoked, but there was some activity, re-arm |
1422 | // the watcher to fire in last_activity + 60, which is |
1422 | // the watcher to fire in last_activity + 60, which is |
1423 | // guaranteed to be in the future, so "again" is positive: |
1423 | // guaranteed to be in the future, so "again" is positive: |
1424 | w->again = timeout - now; |
1424 | w->repeat = timeout - now; |
1425 | ev_timer_again (EV_A_ w); |
1425 | ev_timer_again (EV_A_ w); |
1426 | } |
1426 | } |
1427 | } |
1427 | } |
1428 | |
1428 | |
1429 | To summarise the callback: first calculate the real timeout (defined |
1429 | To summarise the callback: first calculate the real timeout (defined |