42 lines
1.2 KiB
Markdown
42 lines
1.2 KiB
Markdown
# wepoll - epoll for windows
|
|
|
|
This library implements the
|
|
[epoll](http://man7.org/linux/man-pages/man7/epoll.7.html) API for
|
|
Windows applications. It attempts to be efficient, and to match the
|
|
Linux API and as closely as possible.
|
|
|
|
## Rationale
|
|
|
|
Unlike Linux, OS X, and many other operating systems, Windows doesn't
|
|
have a good API for receiving socket state notifications. It only
|
|
supports the `select` and `WSAPoll` APIs, but they suffer from
|
|
well-understood scalability issues. Using I/O completion ports isn't
|
|
always practical when software is designed to be cross-platform.
|
|
|
|
## Features
|
|
|
|
* poll 100000s of sockets, efficiently
|
|
* fully thread safe, multiple threads can poll the same epoll instance
|
|
* sockets can be added to multiple epoll sets
|
|
|
|
## Limitations
|
|
|
|
* only works on sockets (pipes, TTYs not supported)
|
|
* the EPOLLEXCLUSIVE flag isn't supported
|
|
|
|
## How to use
|
|
|
|
The library is distributed as a single source file (wepoll.c) and a
|
|
single header file (wepoll.h). Compile the .c file as part of your
|
|
project, and include the header wherever needed.
|
|
|
|
## Compatibility
|
|
|
|
* Requires Windows 7 or higher.
|
|
* Can be compiled with recent versions of MSVC and clang.
|
|
GCC (mingw) should work, but is untested.
|
|
|
|
## Compatibility notes
|
|
|
|
**TODO**
|