Communication entre threads

1. Introduction

Un des problèmes récurrents du multithreading est la communication entre threads. Une première solution est de définir une ressource destinée aux échanges. Quand un thread accède à la ressource pour la lire ou la modifier, il place un verrou (lock) sur cette ressource de manière à éviter que plusieurs threads n’accèdent en même temps à la même ressource. Cette solution possède ses limites, quel que soit le langage, provoquant régulièrement des problèmes à l’exécution comme celui du deadlock.

Une autre solution consiste à établir un canal de communication entre deux threads. La terminologie en anglais de ce dispositif est channel. Cet intermédiaire privilégié entre deux threads est une solution proposée par le langage Rust ; elle est l’objet de la présente section. Canal de communication channel

2. Usage des canaux en Rust

a. Définition

Quand on parle d’un canal en développement multithreading Rust, on peut imaginer une sorte de tuyau dans lequel de l’information transite de manière unidirectionnelle ; seulement dans le sens A vers B. Si on a le thread A, il utilise donc le canal pour envoyer des informations au thread B via ce canal.

Pour les spécialistes d’Unix, cette description vous fera peut-être penser à la notion...

Pour consulter la suite, découvrez le livre suivant :
couv_EIRUST.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Premiers threads et parallélisme
Suivant
Usage des verrous mutuels exclusifs