workerpool-rs

Crates.ioworkerpool-rs
lib.rsworkerpool-rs
version0.2.1
sourcesrc
created_at2020-10-10 22:27:15.251697
updated_at2023-05-05 17:41:24.769735
descriptionA simple workerpool for rust
homepagehttps://github.com/jcbritobr/workerpool
repositoryhttps://github.com/jcbritobr/workerpool
max_upload_size
id298202
size11,027
Júlio César de Brito Gardona (jcbritobr)

documentation

README

Workerpool

A simple rust workerpool implementation that uses channels to synchronize the jobs. It can spawn a fixed number of worker threads, that waits for a job queue to consum.

  • Use
 use workerpool_rs::pool::WorkerPool;
 use std::sync::mpsc::channel;
 use std::sync::{Arc, Mutex};

 let n_workers = 4;
 let n_jobs = 8;
 let pool = WorkerPool::new(n_workers);

 let (tx, rx) = channel();
 let atx = Arc::new(Mutex::new(tx));
 for _ in 0..n_jobs {
     let atx = atx.clone();
     pool.execute(move|| {
         let tx = atx.lock().unwrap();
         tx.send(1).expect("channel will be there waiting for the pool");
     });
 }

 assert_eq!(rx.iter().take(n_jobs).fold(0, |a, b| a + b), 8);
  • Test
$ cargo test
Commit count: 29

cargo fmt