version 1.2.4
This commit is contained in:
commit
38ac088e7a
23
README.md
23
README.md
@ -3,8 +3,8 @@
|
|||||||
[![][ci status badge]][ci status link]
|
[![][ci status badge]][ci status link]
|
||||||
|
|
||||||
This library implements the [epoll][man epoll] API for Windows
|
This library implements the [epoll][man epoll] API for Windows
|
||||||
applications. It attempts to be efficient, and to match the Linux API
|
applications. It is fast and scalable, and it closely resembles the API
|
||||||
as semantics as closely as possible.
|
and behavior of Linux' epoll.
|
||||||
|
|
||||||
## Rationale
|
## Rationale
|
||||||
|
|
||||||
@ -21,18 +21,19 @@ to run on Linux.
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
* can poll 100000s of sockets efficiently
|
* Can poll 100000s of sockets efficiently.
|
||||||
* fully thread safe
|
* Fully thread-safe.
|
||||||
* multiple threads can poll the same epoll port
|
* Multiple threads can poll the same epoll port.
|
||||||
* sockets can be added to multiple epoll sets
|
* Sockets can be added to multiple epoll sets.
|
||||||
* polling for `EPOLLIN`, `EPOLLOUT`, `EPOLLPRI`, `EPOLLRDHUP`,
|
* All epoll events (`EPOLLIN`, `EPOLLOUT`, `EPOLLPRI`, `EPOLLRDHUP`)
|
||||||
`EPOLLHUP`, and `EPOLLERR` events
|
are supported.
|
||||||
* `EPOLLONESTHOT` flag
|
* Level-triggered and one-shot (`EPOLLONESTHOT`) modes are supported
|
||||||
|
* Trivial to embed: you need [only two files][dist].
|
||||||
|
|
||||||
## Limitations
|
## Limitations
|
||||||
|
|
||||||
* only works with sockets
|
* Only works with sockets.
|
||||||
* some modes not suported: `EPOLLET`, `EPOLLEXCLUSIVE`
|
* Edge-triggered (`EPOLLET`) mode isn't supported.
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
|
|
||||||
|
|||||||
2
wepoll.c
2
wepoll.c
@ -307,7 +307,7 @@ typedef intptr_t ssize_t;
|
|||||||
#define inline __inline
|
#define inline __inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(static_assert) && !defined(_MSC_VER)
|
#if (defined(__clang__) || defined(__GNUC__)) && !defined(static_assert)
|
||||||
/* Polyfill `static_assert` for some versions of clang and gcc. */
|
/* Polyfill `static_assert` for some versions of clang and gcc. */
|
||||||
#define static_assert(condition, message) typedef __attribute__( \
|
#define static_assert(condition, message) typedef __attribute__( \
|
||||||
(__unused__)) int __static_assert_##__LINE__[(condition) ? 1 : -1];
|
(__unused__)) int __static_assert_##__LINE__[(condition) ? 1 : -1];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user