fad*_*bee 4 thread-safety rust
我有一个 UDP 服务器示例,它正在运行:
let mut socket = UdpSocket::bind("127.0.0.1:12345")?;
let mut buf = [0; 4096];
loop {
let sock = socket.try_clone()?;
match socket.recv_from(&mut buf) {
Ok((amt, src)) => {
thread::spawn(move || {
println!("Handling connection from {}", &src);
let buf = &mut buf[..amt];
buf.reverse();
sock.send_to(&buf, &src).expect("error sending");
});
},
Err(err) => {
eprintln!("Err: {}", err);
}
}
}
Run Code Online (Sandbox Code Playgroud)
看起来所有传入的 UDP 数据包都共享相同的缓冲区。
如果两个 UDP 数据包同时到达,第二个数据包是否会覆盖第一个数据包buf
,导致第二个数据包的(反向)内容被发送回两个发送者?
Rust 如何防止这种情况发生?
归档时间: |
|
查看次数: |
2928 次 |
最近记录: |