3
我正在尋找關於任務失敗的一些說明。據我瞭解,如果任務1產生任務2,則任務2是任務1的子任務。如果任務1失敗,它會在任務2後自動失敗並清理嗎?Rust中的失敗任務
例如,我開始AI/O任務的插座上,像這樣:
spawn(proc() {
start_new_socket(socket, socket_receiver)
});
我們將調用任務1.在任務1,我產生另一個任務:
fn start_new_socket(socket: Socket, receiver: Receiver<Message>) {
// Write task
let mut stream_write = socket.stream.clone();
spawn(proc() {
loop {
let msg = receiver.recv();
msg.send(&mut stream_write).unwrap();
}
});
// Open up a blocking read on this socket
let mut stream_read = socket.stream.clone();
loop {
let msg = Message::load(&mut stream_read).unwrap();
match msg.payload {
Text(ptr) => {
let json_slice = (*ptr).as_slice();
println!("Socket: {} recevied: {}", socket.id, json_slice);
parse_json(json_slice, socket.clone());
}
Binary(ptr) => {
// TODO - Do awesome binary shit
}
}
}
}
如果任務1,start_new_socket
由於EOF
或流中的其他內容而失敗,那麼啓動的寫入任務是否也會失敗?
很久以前,這些任務確實是分層次的,有很多選項可以控制失敗時的行爲。這個複雜的系統被一個更簡單,更平易近人的系統取代,任務之間沒有任何關係。 – barjak 2014-09-03 18:15:57