Maison  >  Article  >  développement back-end  >  Comment les fonctions Golang sont-elles utilisées pour la programmation simultanée ?

Comment les fonctions Golang sont-elles utilisées pour la programmation simultanée ?

PHPz
PHPzoriginal
2024-04-12 09:36:021074parcourir

Le langage

Go implémente la programmation simultanée via Goroutine, qui permet d'exécuter simultanément des threads légers. Les goroutines peuvent être créées à l'aide du mot-clé go et communiquer via des tuyaux (type chan). Dans le cas réel, nous recherchons des chaînes en parallèle et créons un pipeline pour recevoir les résultats de chaque recherche Goroutine, améliorant ainsi la vitesse de recherche.

Comment les fonctions Golang sont-elles utilisées pour la programmation simultanée ?

Utilisation des fonctions Go pour la programmation simultanée

Le langage Go fournit un thread léger appelé Goroutine, qui peut être utilisé pour la programmation simultanée. Les Goroutines peuvent s'exécuter simultanément, améliorant ainsi les performances et la réactivité de votre application.

Pour créer une Goroutine, utilisez le mot clé go, suivi de la fonction à exécuter : go 关键字,后面跟着要执行的函数:

go func() {
    fmt.Println("这是一个 Goroutine!")
}

Goroutine 也可以接收和发送值。使用 chan

// 创建管道
ch := make(chan string)

// Goroutine 发送值
go func() {
    ch <- "消息 1"
    ch <- "消息 2"
}

// 主程序接收值
for msg := range ch {
    fmt.Println(msg)
}

Les Goroutines peuvent également recevoir et envoyer des valeurs. Utilisez le type chan pour créer un pipeline qui permet la communication entre les Goroutines :

// 文件列表
files := []string{"file1.txt", "file2.txt", "file3.txt"}

// 创建管道
result := make(chan string)

// Goroutine 并行查找字符串
for _, file := range files {
    go func(file string) {
        data, err := ioutil.ReadFile(file)
        if err != nil {
            result <- file + ": " + err.Error()
            return
        }

        result <- file + ": " + strconv.Itoa(strings.Count(string(data), "foo"))
    }(file)
}

// 主程序打印结果
for result := range result {
    fmt.Println(result)
}
Exemple pratique : recherche parallèle de chaînes

Supposons que nous ayons une liste de fichiers à partir desquels nous devons trouver un chaîne. Nous pouvons utiliser Goroutines pour faire cela en parallèle, rendant la recherche plus rapide :

rrreee

En utilisant cet exemple, nous pouvons trouver les occurrences de la chaîne "foo" dans chaque fichier en parallèle, obtenant des performances plus rapides qu'une recherche à un seul thread. 🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn