May is a high-performant library for programming stackful coroutines with which you can easily develop and maintain massive concurrent programs. It can be thought as the Rust version of the popular Goroutine.
- The stackful coroutine’s implementation is based on generator;
- Support schedule on a configurable number of threads for multi-core systems;
- Support coroutine’s version of a local storage ([CLS][cls]);
- Support efficient asynchronous network I/O;
- Support efficient timer management;
- Support standard synchronization primitives, a semaphore, an MPMC channel, etc;
- Support cancellation of coroutines;
- Support graceful panic handling that will not affect other coroutines;
- Support scoped coroutine creation;
- Support general selection for all the coroutine’s API;
- All the coroutine’s API are compatible with the standard library semantics;
- All the coroutine’s API can be safely called in multi-threaded context;
- Both stable, beta, and nightly channels are supported;
- Both x86_64 GNU/Linux, x86_64 Windows, x86_64 Mac OS are supported.
A macro to create a
static of type
macro used to create the select coroutine that will run in a infinite loop, and generate as many events as possible
macro used to create the select coroutine that will run only once, thus generate only one event
macro used to spawn a coroutine
macro used to spawn a coroutine with options such as name, stack_size.
macro used to join all scoped sub coroutines
macro used to select for only one event it will return the index of which event happens first
get the may configuration instance