All projects
In buildAI
Ledger
Chat-first AI career copilot.
What I built
A chat-first AI career copilot, currently in build.
Stack
AI
The kind of code behind it
1use std::sync::mpsc;
2use std::thread;
3
4pub struct WorkerPool {
5 workers: Vec<thread::JoinHandle<()>>,
6}
7
8impl WorkerPool {
9 pub fn new(size: usize, jobs_rx: mpsc::Receiver<Box<dyn FnOnce() + Send>>) -> Self {
10 let jobs_rx = std::sync::Arc::new(std::sync::Mutex::new(jobs_rx));
11 let mut workers = Vec::with_capacity(size);
12
13 for id in 0..size {
14 let jobs_rx = jobs_rx.clone();
15 workers.push(thread::spawn(move || loop {
16 let job = jobs_rx.lock().unwrap().recv();
17 match job {
18 Ok(job) => {
19 println!("worker {id} picked up a job");
20 job();
21 }
22 Err(_) => break, // channel closed, shut down
23 }
24 }));
25 }
26
27 WorkerPool { workers }
28 }
29
30 pub fn join(self) {
31 for worker in self.workers {
32 let _ = worker.join();
33 }
34 }
35}