6 个版本
0.1.6 | 2020 年 5 月 20 日 |
---|---|
0.1.5 | 2020 年 5 月 20 日 |
#1205 在 并发 中
7KB
176 行
Conman - 并发管理器
Conman 是一个高性能的线程安全、线程和工作项管理库。使用简单,只需实例化一个 conman 实例,并指定希望使用的线程数。在您的结构体上实现 ConmanItem 特质,并将其添加为项目。如果有可用的线程,它将立即被拉取;否则,它将被添加到队列中,并由下一个可用的线程拉取。
没有使用不安全代码...
[dependencies]
conman = "0.1.5"
pub extern crate conman;
pub use conman::*;
struct MyItem {
id: u32
}
impl conman::ConmanItem for MyItem {
fn execute (&self) {
println!("{}", self.id);
}
}
fn main() {
// I like to use num_cpus to get the number of logical cores available
// let mut cman = conman::Conman::new(num_cpus::get());
// new instance
let mut cman = conman::Conman::new(8);
for i in 0..100 {
let item = Box::new(MyItem { id: i });
// add an item
cman.add_item(item);
// add item at front of queue
// cman.add_item_priority(item);
}
std::thread::sleep(Duration::from_millis(80));
let remaining = cman.stop();
println!("Stopped with {} items in queue", remaining);
}