
Concurrency Basics
Threads, thread::spawn, move closures, channels (mpsc), Send & Sync traits, thread safety
1Welke functie moet worden gebruikt om een nieuwe thread in Rust te maken?
Welke functie moet worden gebruikt om een nieuwe thread in Rust te maken?
Antwoord
De functie thread::spawn uit de module std::thread maakt een nieuwe uitvoeringsthread aan. Ze neemt een closure als parameter en geeft een JoinHandle terug waarmee je via de methode join() op het einde van de thread kunt wachten. Deze functie is het belangrijkste startpunt voor threadgebaseerd concurrent programmeren in Rust.
2Wat geeft de methode join() terug wanneer ze op een JoinHandle wordt aangeroepen?
Wat geeft de methode join() terug wanneer ze op een JoinHandle wordt aangeroepen?
Antwoord
De methode join() geeft een Result<T, E> terug, waarbij T het retourtype van de closure van de thread is. Als de thread normaal eindigt, krijg je Ok(waarde). Als de thread in panic is gegaan, krijg je Err met de panic-informatie. Zo kun je threadresultaten veilig ophalen of de fouten ervan afhandelen.
3Waarom het sleutelwoord move gebruiken bij een closure die aan thread::spawn wordt doorgegeven?
Waarom het sleutelwoord move gebruiken bij een closure die aan thread::spawn wordt doorgegeven?
Antwoord
Het sleutelwoord move dwingt de closure om het ownership van de vastgelegde variabelen over te nemen in plaats van ze te lenen. Dit is essentieel bij thread::spawn omdat de nieuwe thread langer kan leven dan de scope waarin de variabelen zijn gedefinieerd. Zonder move weigert de compiler, omdat hij niet kan garanderen dat referenties geldig blijven gedurende de hele levensduur van de thread.
Wat is de rol van de Send-trait in Rust?
Wat is de rol van de Sync-trait in Rust?
+17 gespreksvragen
Andere Rust-sollicitatieonderwerpen
Rust-basis
Ownership & Borrowing
Structs & Enums
Foutafhandeling
Collecties
Modules & Packages
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macro's
Serde & serialisatie
Unsafe Rust
Geavanceerde traits
Geavanceerde Lifetimes
Type System
Tokio & Async I/O
Prestatie-optimalisatie
Memory Management
Web Frameworks
Database Integration
Rust Design Patterns
Beheers Rust voor je volgende gesprek
Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.
Begin gratis