This crate contains traits to abstract the functionality from various threadpools. This crate serves 2 purposes
You are developing a lib
that needs some sort of threadpool, but you don't want to force a specific one?
Especially since every crate seems to have another threadpool and managing those is a difficult task.
Base your crate on ThreadPoolSyncConsumer
or ThreadPoolASyncConsumer
.
Consumers of your crate can then choose which implementation they want.
You are working on a new threadpool crate? But it's hard to fit in this ecosystem as there are already many pools.
This crate is build by analysing many threadpool crates and while your implementation might not fit 100% to our traits.
Implementing the ThreadPoolSyncConsumer
or ThreadPoolASyncConsumer
traits might make your crate more attractive for others.
In case you support a builder-pattern there are additional traits to implement, e.g. for setting a thread_max
https://xkcd.com/927/
There are many threadpools deply integrated in rust crates, but not a single trait
to cover all
tokio
https://docs.rs/tokio/0.2.22/tokio/runtime/struct.Runtime.html#method.newfutures
https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.4/futures/executor/struct.ThreadPool.htmlrayon
https://doc.servo.org/rayon/struct.ThreadPool.htmlthreadpool
https://docs.rs/threadpool/1.8.1/threadpool/struct.ThreadPool.htmlscoped_threadpool
http://kimundi.github.io/scoped-threadpool-rs/scoped_threadpool/struct.Pool.htmlscheduled_thread_pool
https://docs.rs/scheduled-thread-pool/0.2.5/scheduledthreadpool/struct.ScheduledThreadPool.htmltiny-http
https://github.com/tiny-http/tiny-http/blob/master/src/util/task_pool.rstokio_io_pool
https://docs.rs/tokio-io-pool/0.1.6/tokioiopool/struct.Runtime.htmluvth
https://docs.rs/uvth/4.0.1/uvth/struct.ThreadPool.htmlworkerpool
https://docs.rs/workerpool/1.2.0/workerpool/struct.Pool.htmlrusty_pool
https://docs.rs/rustypool/0.4.3/rustypool/struct.ThreadPool.htmlthere is one trait that tries to archive something similar but adds alot of dependencies:
- futures-cputask
https://docs.rs/futures-cputask/0.3.0/futures_cputask/trait.SyncThreadPool.html
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.