L'outil puissant de programmation simultanée dans Golang : Canaux
En programmation simultanée, la communication entre les threads est une technologie très importante. Dans Golang, les canaux sont devenus une primitive de concurrence très utile.
Que sont les chaînes ?
Channel est un type fourni par Golang pour la communication et l'échange de données entre différents Goroutines (threads légers). C'est similaire à un canal qui peut transmettre des données entre différents Goroutines.
Les canaux sont déclarés comme suit :
var ch chan T
où T représente le type de données de transmission. Lors de la création d'un canal, vous devez utiliser la fonction make pour l'initialisation :
ch := make(chan T)
Caractéristiques des canaux
Opérations des chaînes
Les chaînes comprennent deux opérations de base : envoyer et recevoir.
L'opération d'envoi utilise l'opérateur <- pour envoyer des données au canal :
ch <- data
L'opération de réception utilise l'opérateur <- pour obtenir des données du canal :
data <- ch
Exemple de canal
Regardons un exemple simple montrant comment utiliser les canaux pour transférer des données entre deux Goroutines.
package main import ( "fmt" "time" ) func counter(ch chan int) { for i := 0; i < 5; i++ { ch <- i // 将数据写入到 Channel 中 fmt.Println("Sent:", i) time.Sleep(time.Second) // 休眠 1 秒钟 } close(ch) // 关闭 Channel } func main() { ch := make(chan int) // 创建一个 int 类型的 Channel go counter(ch) // 启动一个 Goroutine 来执行计数器函数 // 从 Channel 中读取数据,直到 Channel 被关闭 for i := range ch { fmt.Println("Received:", i) } }
Dans l'exemple ci-dessus, nous avons créé une fonction compteur
pour envoyer 5 nombres de 0 à 4 au canal. Ensuite, dans la fonction main
, nous utilisons le mot-clé range
pour recevoir les données du canal et les imprimer. counter
函数,用于将 0 到 4 这 5 个数字发送到 Channel 中。然后,在 main
函数中,我们使用 range
关键字从 Channel 中接收数据,并打印出来。
注意,我们在 counter
函数中使用了 time.Sleep(time.Second)
time.Sleep(time.Second)
dans la fonction counter
pour simuler la mise en veille du compteur pendant 1 seconde après l'envoi d'un numéro. Il s’agit de démontrer l’effet de la collaboration entre différents Goroutines. Enfin, exécutez le code ci-dessus et vous verrez que les nombres dans le résultat de sortie apparaissent alternativement parce que deux Goroutines s'exécutent simultanément et transmettent des données via le canal. RésuméEn utilisant les canaux, nous pouvons parvenir à une communication efficace entre différents Goroutines, réalisant ainsi une collaboration dans la programmation simultanée. Les caractéristiques de blocage et le principe du premier entré, premier sorti des canaux garantissent l'ordre et la sécurité des threads de la transmission des données. Dans Golang, Channels est un outil de programmation simultanée très utile qui mérite d'être appris et maîtrisé en profondeur. J'espère que cet article vous aidera à comprendre Channels, un outil puissant de programmation simultanée dans Golang. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!