PriorityQueue - Rust #003 - Multithreading
Dans cette vidéo, on entre dans le vif du sujet : la concurrence.
On commence par réorganiser le projet en workspace Cargo pour structurer le code, puis on découvre comment Rust aborde la sécurité mémoire dans un contexte multithread.
Au programme
- Pourquoi passer à un workspace Cargo
- Le comportement de thread::spawn, le rôle de move et de 'static
- Les traits Send et Sync expliqués simplement
- Pourquoi notre PriorityQueue n'est pas thread-safe telle quelle
- L'introduction de Arc et Mutex pour le partage et la protection des données
- Le RAII, le poisoning des mutex, et la gestion des erreurs dans Result/Option
Une étape clé avant d'aborder l'asynchrone (Tokio, async-std) dans la prochaine vidéo.
Liens utiles
Code source : github.com/xigh/pq-async-rs
PriorityQueue en Rust -- série vidéo
- PriorityQueue - Rust #001
- PriorityQueue - Rust #002 - Équité
- PriorityQueue - Rust #003 - Multithreading
- PriorityQueue - Rust #004 - Blocking Dequeue
- PriorityQueue - Rust #005 - Graceful Shutdown
- PriorityQueue - Rust #006 - async/await