Crates.io | lelet |
lib.rs | lelet |
version | 1.2.18 |
source | src |
created_at | 2020-04-13 01:38:29.80789 |
updated_at | 2020-06-17 09:34:16.97628 |
description | golang like task executor |
homepage | https://github.com/win-t/lelet |
repository | https://github.com/win-t/lelet |
max_upload_size | |
id | 229550 |
size | 42,243 |
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.
With cargo add installed run:
$ cargo add lelet
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));
}