diff --git a/src/main.rs b/src/main.rs index 10c80c3..9881f40 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ use log::info; use std::io::{Read, Write}; use std::net::{TcpListener, TcpStream}; -use std::sync::mpsc; +use std::sync::{mpsc, Arc, Mutex}; use std::{sync, thread}; static GET: &'static [u8] = b"GET / HTTP/1.1\r\n"; @@ -35,8 +35,9 @@ impl ThreadPool { assert!(size > 0); let mut workers = Vec::with_capacity(size); let (sender, receiver) = mpsc::channel(); + let receiver = Arc::new(Mutex::new(receiver)); for id in 0..size { - workers.push(Worker::new(id, receiver)) + workers.push(Worker::new(id, Arc::clone(&receiver))) } Self { workers, sender } }