Tôi đang chạy accept
function of a TCP listener trong một vòng lặp trong một chuỗi riêng biệt. Tôi muốn tắt chủ đề này một cách duyên dáng, nhưng tôi không thể thấy bất kỳ loại cơ chế shutdown
nào mà tôi có thể sử dụng để thoát khỏi việc chấp nhận.Cách thoát khỏi chặn TcpListener :: chấp nhận cuộc gọi?
cách tiếp cận hiện tại của tôi trông giống như sau:
use std::net::TcpListener;
use std::thread::spawn;
fn main() {
let tcp_listener = TcpListener::bind((("0.0.0.0"), 0)).unwrap();
let tcp_listener2 = tcp_listener.try_clone().unwrap();
let t = spawn(move || {
loop {
match tcp_listener2.accept() {
Ok(_) => { }
Err(_) => { break; }
}
}
});
drop(tcp_listener);
assert!(t.join().is_ok());
}
Nhưng điều đó không làm các trick (có lẽ vì tôi thả chỉ có bản sao nhân bản?). Bất kỳ suy nghĩ về cách tắt đúng thread như vậy?
(để tham khảo, I asked this question on rust user forum as well)
Cảm ơn bạn, có thể bạn đang thiếu chức năng trong API. Tôi đã cho bạn +1, nhưng tôi muốn chờ lâu hơn một chút, có thể ai đó có một lời giải thích khác. –