Hyper有以下实现的示例:Handler
Sync
use std::sync::Mutex;
use std::sync::mpsc::{channel, Sender};
use hyper::server::{Handler, Server, Request, Response};
struct SenderHandler {
sender: Mutex<Sender<&'static str>>
}
impl Handler for SenderHandler {
fn handle(&self, req: Request, res: Response) {
self.sender.lock().unwrap().send("start").unwrap();
}
}
并声明Handler
必须实现Sync
,因为Handler
可以从不同的线程调用。
对我来说,这听起来像是不必要的性能损失。我更愿意为每个线程设置一个SenderHandler
,每个线程都是独立的,这将消除对实现Sync
.
我是否误解了 Hyper,Rust 的类型系统,或者这不可能?