因此,如果您有一个 MUD 服务器在单独的进程中处理每个 tcp 连接,
for stream in acceptor.incoming() {
match stream {
Err(e) => { /* connection failed */ }
Ok(stream) => spawn(proc() {
handle_client(stream)
})
}
}
为该服务器共享可变世界数据的策略是什么?我可以想象 n 个连接响应来自用户的命令。每个命令都需要访问并可能修改世界。
pub struct Server<'a> {
world: World<'a>
}
pub struct World<'a> {
pub chat_rooms: HashMap<&'a str, ChatRoom<'a>>
}
impl<'a> World<'a> {
pub fn new() -> World<'a> {
let mut rooms = HashMap::new();
rooms.insert("General", ChatRoom::new("General"));
rooms.insert("Help", ChatRoom::new("Help"));
World{chat_rooms: rooms}
}
}
Arc会是要走的路吗?
let shared_server = Arc::new(server);
let server = shared_server.clone();
spawn(proc() {
// Work with server
});
扩展到 100 或 1000 个用户怎么样?我只是在寻找正确方向的推动力。