#thread-pool #semaphore #thread #async #long-running

blocking-permit

Permits and a thread pool for blocking operations

8 stable releases

1.3.3 Oct 28, 2021
1.3.2 Jan 28, 2021
1.2.1 Aug 29, 2020
1.2.0 Feb 4, 2020
0.1.0 Dec 20, 2019

#927 in Asynchronous


Used in 2 crates (via body-image-futio)

MIT/Apache

68KB
1.5K SLoC

blocking-permit

Rustdoc Change Log crates.io CI Status

This crate provides:

  • A specialized, custom thread pool, DispatchPool, for offloading blocking or otherwise long running operations from a main or reactor threads.

  • A BlockingPermit for limiting the number of concurrent blocking operations via a Semaphore type.

  • A Cleaver for splitting Stream buffers into more manageable sizes.

  • A YieldStream for yielding between Stream items.

Minimum supported rust version

MSRV := 1.45.2

The crate will fail fast on any lower rustc (via a build.rs version check) and is also CI tested on this version.

License

This project is dual licensed under either of following:

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in blocking-permit by you, as defined by the Apache License, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0.6–2MB
~30K SLoC