Rust

Concurrency Basics

Threads, thread::spawn, move closures, channels (mpsc), trait Send & Sync, thread safety

20 domande da colloquio·
Mid-Level
1

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.

2

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.

3

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.

4

Qual è il ruolo del trait Send in Rust?

5

Qual è il ruolo del trait Sync in Rust?

+17 domande da colloquio

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