L’échange de données entre coroutines
Deux éléments clés du langage Kotlin le leur permettent : les channels et les flows.
1. Les channels Channel
a. Qu’est-ce qu’un channel ?
Les coroutines peuvent communiquer entre elles. En d’autres termes, elles peuvent s’échanger des données. Un channel permet les échanges de données entre coroutines. On peut le voir comme une file dans laquelle une première coroutine envoie des données tandis qu’une seconde coroutine les consomme.
En Kotlin, un channel se déclare comme un objet de type Channel. Il convient ensuite, au sein des coroutines, d’utiliser les méthodes de cet objet Channel pour envoyer des données ou pour les consommer. Channel
Pour pouvoir utiliser un objet de type Channel, il convient donc d’en créer une instance. Il s’agit d’un objet générique (au même titre que les collections). Il est donc nécessaire de préciser le type de données qui vont être échangées au sein du channel. Il est également nécessaire de préciser la capacité du channel, c’est-à-dire le nombre d’éléments qui peuvent être échangés par les coroutines.
Créons un objet de type Channel dans l’idée d’échanger trois entiers entre deux coroutines :
val channel = Channel<Int>(3)
Une fois la variable channel créée...