Rust单线程服务器升级为多线程服务器的实现
单线程服务器的问题
我们已经实现了一个简单的Rust Web服务器,大约40行代码,它可以响应一个请求并返回页面内容,对于其他请求则返回404响应。但目前这个服务器是单线程的,意味着它一次只能处理一个请求。
为了模拟慢请求对服务器的影响,我们添加了对 /sleep 请求的处理,当收到 /sleep 请求时,服务器会休眠5秒后再响应。代码如下:
use std::thread;
use std::time::Duration;
// --snip--
fn handle_connection(mut stream: TcpStream) {
// --snip--
let get = b"GET / HTTP/1.1\r\n";
let sleep = b"GET /sleep HTTP/1.1\r\n";
let (status_line, filename) = if buffer.starts_with(get) {
("HTTP/1.1 200 OK\r\n\r\n", "hello.html")
} else if buffer.starts_with(sleep) {
thread::sleep(Duration::from_secs(5));
("HTTP/1.1 200 OK\r\n\r\n", "hello.html")
} else {
("HTTP/1.1 404 NOT FOUND\r\
超级会员免费看
订阅专栏 解锁全文
6

被折叠的 条评论
为什么被折叠?



