libuv/include
Ben Noordhuis 9efa8b3571 unix, windows: rework reference counting scheme
This commit changes how the event loop determines if it needs to stay alive.

Previously, an internal counter was increased whenever a handle got created
and decreased again when the handle was closed.

While conceptually simple, it turned out hard to work with: you often want
to keep the event loop alive only if the handle is actually doing something.
Stopped or inactive handles were a frequent source of hanging event loops.

That's why this commit changes the reference counting scheme to a model where
a handle only references the event loop when it's active. 'Active' means
different things for different handle types, e.g.:

 * timers: ticking
 * sockets: reading, writing or listening
 * processes: always active (for now, subject to change)
 * idle, check, prepare: only active when started

This commit also changes how the uv_ref() and uv_unref() functions work: they
now operate on the level of individual handles, not the whole event loop.

The Windows implementation was done by Bert Belder.
2012-05-17 07:07:53 +02:00
..
uv-private unix, windows: rework reference counting scheme 2012-05-17 07:07:53 +02:00
ares_version.h c-ares: upgrade to 1.7.5 2011-09-27 16:04:25 -07:00
ares.h c-ares: upgrade to 1.7.5 2011-09-27 16:04:25 -07:00
uv.h unix, windows: rework reference counting scheme 2012-05-17 07:07:53 +02:00