
Concurrency Basics
Threads, thread::spawn, move closures, channels (mpsc), trait Send & Sync, thread safety
1Quale funzione si deve usare per creare un nuovo thread in Rust?
Quale funzione si deve usare per creare un nuovo thread in Rust?
Risposta
La funzione thread::spawn del modulo std::thread crea un nuovo thread di esecuzione. Accetta una closure come parametro e restituisce un JoinHandle che consente di attendere il termine del thread tramite il metodo join(). Questa funzione è il principale punto di ingresso per la programmazione concorrente basata su thread in Rust.
2Cosa restituisce il metodo join() quando viene chiamato su un JoinHandle?
Cosa restituisce il metodo join() quando viene chiamato su un JoinHandle?
Risposta
Il metodo join() restituisce un Result<T, E> dove T è il tipo di ritorno della closure del thread. Se il thread termina normalmente, si ottiene Ok(valore). Se il thread è andato in panic, si ottiene Err contenente le informazioni sul panic. Questo consente di recuperare i risultati del thread o gestirne gli errori in modo sicuro.
3Perché usare la parola chiave move con una closure passata a thread::spawn?
Perché usare la parola chiave move con una closure passata a thread::spawn?
Risposta
La parola chiave move forza la closure a prendere ownership delle variabili catturate invece di prenderle in prestito. È essenziale con thread::spawn perché il nuovo thread può vivere più a lungo dello scope in cui sono definite le variabili. Senza move, il compilatore rifiuta perché non può garantire che i riferimenti siano validi per l'intera durata di vita del thread.
Qual è il ruolo del trait Send in Rust?
Qual è il ruolo del trait Sync in Rust?
+17 domande da colloquio
Altri argomenti di colloquio Rust
Fondamenti di Rust
Ownership & Borrowing
Structs & Enums
Gestione degli errori
Collezioni
Moduli e package
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macro
Serde e serializzazione
Unsafe Rust
Trait avanzati
Lifetime Avanzati
Type System
Tokio & Async I/O
Ottimizzazione delle Prestazioni
Memory Management
Web Frameworks
Database Integration
Design Pattern in Rust
Padroneggia Rust per il tuo prossimo colloquio
Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.
Inizia gratis