1 stable release
1.2.18 | Jun 17, 2020 |
---|---|
1.2.17 |
|
1.2.7 |
|
1.1.13 |
|
#2136 in Asynchronous
95 downloads per month
40KB
921 lines
lelet
A golang like task executor
Lelet executor
Task executor that inspired by golang runtime.
The executor is running in thread pool, and when it detect blocking call inside a task, it will automatically scale the thread pool.
Because of this feature, it is always safe for you to do blocking operation in a task, you don't need to worry about blocking the entire executor thread.
Installation
With cargo add installed run:
$ cargo add lelet
Example
use std::thread;
use std::time::Duration;
use futures_timer::Delay;
fn main() {
lelet::spawn(async {
for _ in 0..10 {
Delay::new(Duration::from_secs(1)).await;
println!("Non-blocking Hello World");
}
});
lelet::spawn(async {
for _ in 0..10 {
thread::sleep(Duration::from_secs(1));
println!("Blocking Hello World");
}
});
thread::sleep(Duration::from_secs(11));
}
Dependencies
~1MB
~14K SLoC