- fn new(id: usize) -> Worker {
- Worker { id, thread: thread::spawn(|| {}) }
+ fn new(id: usize, receiver: Arc<Mutex<mpsc::Receiver<Message>>>) -> Worker {
+ let thread = Some(thread::spawn(move || loop {
+ let message = receiver.lock().unwrap().recv().unwrap();
+
+ match message {
+ Message::NewJob(job) => {
+ println!("Worker {} got a job, executing", id);
+ job();
+ },
+
+ Message::Terminate => {
+ println!("Worker {} got terminated", id);
+ break;
+ }
+ }
+ }));
+ Worker { id, thread }