Alien-uv

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

libuv/docs/src/loop.rst
libuv/docs/src/migration_010_100.rst
libuv/docs/src/misc.rst
libuv/docs/src/pipe.rst
libuv/docs/src/poll.rst
libuv/docs/src/prepare.rst
libuv/docs/src/process.rst
libuv/docs/src/request.rst
libuv/docs/src/signal.rst
libuv/docs/src/sphinx-plugins/manpage.py
libuv/docs/src/static/architecture.png
libuv/docs/src/static/diagrams.key/Data/st0-311.jpg
libuv/docs/src/static/diagrams.key/Data/st1-475.jpg
libuv/docs/src/static/diagrams.key/Index.zip
libuv/docs/src/static/diagrams.key/Metadata/BuildVersionHistory.plist
libuv/docs/src/static/diagrams.key/Metadata/DocumentIdentifier
libuv/docs/src/static/diagrams.key/Metadata/Properties.plist
libuv/docs/src/static/diagrams.key/preview-micro.jpg
libuv/docs/src/static/diagrams.key/preview-web.jpg
libuv/docs/src/static/diagrams.key/preview.jpg
libuv/docs/src/static/favicon.ico
libuv/docs/src/static/logo.png
libuv/docs/src/static/loop_iteration.png
libuv/docs/src/stream.rst
libuv/docs/src/tcp.rst
libuv/docs/src/threading.rst
libuv/docs/src/threadpool.rst
libuv/docs/src/timer.rst
libuv/docs/src/tty.rst
libuv/docs/src/udp.rst
libuv/docs/src/upgrading.rst
libuv/docs/src/version.rst
libuv/gyp_uv.py
libuv/img/banner.png
libuv/img/logos.svg
libuv/include/uv.h
libuv/include/uv/aix.h
libuv/include/uv/android-ifaddrs.h
libuv/include/uv/bsd.h
libuv/include/uv/darwin.h
libuv/include/uv/errno.h
libuv/include/uv/linux.h
libuv/include/uv/os390.h
libuv/include/uv/posix.h

libuv/README.md  view on Meta::CPAN


Use the `ipcrm` command to manually clear up System V resources.

## Patches

See the [guidelines for contributing][].

[node.js]: http://nodejs.org/
[GYP]: http://code.google.com/p/gyp/
[guidelines for contributing]: https://github.com/libuv/libuv/blob/master/CONTRIBUTING.md
[libuv_banner]: https://raw.githubusercontent.com/libuv/libuv/master/img/banner.png
[x32]: https://en.wikipedia.org/wiki/X32_ABI
[Python 2.6 or 2.7]: https://www.python.org/downloads/
[Visual C++ Build Tools]: https://visualstudio.microsoft.com/visual-cpp-build-tools/
[Visual Studio 2015 Update 3]: https://www.visualstudio.com/vs/older-downloads/
[Visual Studio 2017]: https://www.visualstudio.com/downloads/
[Git for Windows]: http://git-scm.com/download/win

libuv/docs/src/conf.py  view on Meta::CPAN


# The name for this set of Sphinx documents.  If None, it defaults to
# "<project> v<release> documentation".
html_title = 'libuv documentation'

# A shorter title for the navigation bar.  Default is the same as html_title.
html_short_title = 'libuv %s documentation' % version

# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
html_logo = 'static/logo.png'

# The name of an image file (within the static path) to use as favicon of the
# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
html_favicon = 'static/favicon.ico'

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['static']

libuv/docs/src/design.rst  view on Meta::CPAN

libuv is cross-platform support library which was originally written for NodeJS. It's designed
around the event-driven asynchronous I/O model.

The library provides much more than a simple abstraction over different I/O polling mechanisms:
'handles' and 'streams' provide a high level abstraction for sockets and other entities;
cross-platform file I/O and threading functionality is also provided, amongst other things.

Here is a diagram illustrating the different parts that compose libuv and what subsystem they
relate to:

.. image:: static/architecture.png
    :scale: 75%
    :align: center


Handles and requests
^^^^^^^^^^^^^^^^^^^^

libuv provides users with 2 abstractions to work with, in combination with the event loop:
handles and requests.

libuv/docs/src/design.rst  view on Meta::CPAN

The event loop follows the rather usual single threaded asynchronous I/O approach: all (network)
I/O is performed on non-blocking sockets which are polled using the best mechanism available
on the given platform: epoll on Linux, kqueue on OSX and other BSDs, event ports on SunOS and IOCP
on Windows. As part of a loop iteration the loop will block waiting for I/O activity on sockets
which have been added to the poller and callbacks will be fired indicating socket conditions
(readable, writable hangup) so handles can read, write or perform the desired I/O operation.

In order to better understand how the event loop operates, the following diagram illustrates all
stages of a loop iteration:

.. image:: static/loop_iteration.png
    :scale: 75%
    :align: center


#. The loop concept of 'now' is updated. The event loop caches the current time at the start of
   the event loop tick in order to reduce the number of time-related system calls.

#. If the loop is *alive*  an iteration is started, otherwise the loop will exit immediately. So,
   when is a loop considered to be *alive*? If a loop has active and ref'd handles, active
   requests or closing handles it's considered to be *alive*.



( run in 2.147 seconds using v1.01-cache-2.11-cpan-df04353d9ac )