Questo è il mio codice:Qual è il modo corretto in Rust di creare un timeout per un thread o una funzione?
use std::net;
use std::thread;
extern crate argparse;
use argparse::{ArgumentParser, StoreTrue, Store};
fn scan_port(host: &str, port: u16) -> bool {
let host = host.to_string();
let port = port;
let t = thread::spawn(move || net::TcpStream::connect((host.as_str(), port)).is_ok());
t.join().unwrap()
}
Come si crea una situazione in cui il filo sarà terminata o uccisi se la connessione non ha terminato in N secondi?
Il motivo di tutto questo è che Rust non ha modo di impostare un timeout della connessione socket quindi non ho modo di garantire che il programma non si blocchi.
Probabilmente sarebbe meglio se il codice di esempio fosse più minimale, mostrando solo il problema a portata di mano invece di una pagina di parsing dell'argomento della riga di comando e di opzioni di manipolazione. –
Terminare o uccidere un thread era un [cattivo] (http://stackoverflow.com/q/5218969/155423) [idea] (http://stackoverflow.com/q/1559255/155423) nelle lingue che l'hanno aggiunto . Ruggine non lo aggiungerà. – Shepmaster
@MikeCooper Fatto :) – Ba7a7chy