Heim > Backend-Entwicklung > Golang > Wie werden Golang-Funktionen für die gleichzeitige Programmierung verwendet?

Wie werden Golang-Funktionen für die gleichzeitige Programmierung verwendet?

PHPz
Freigeben: 2024-04-12 09:36:02
Original
1127 Leute haben es durchsucht

Die Go-Sprache implementiert die gleichzeitige Programmierung über Goroutine, wodurch leichtgewichtige Threads gleichzeitig ausgeführt werden können. Goroutinen können mit dem Schlüsselwort go erstellt werden und kommunizieren über Pipes (Chan-Typ). Im konkreten Fall suchen wir parallel nach Zeichenfolgen und erstellen eine Pipeline, um die Ergebnisse jeder Goroutine-Suche zu empfangen, wodurch die Suchgeschwindigkeit verbessert wird.

Wie werden Golang-Funktionen für die gleichzeitige Programmierung verwendet?

Go-Funktionen für die gleichzeitige Programmierung verwenden

Die Go-Sprache bietet einen leichten Thread namens Goroutine, der für die gleichzeitige Programmierung verwendet werden kann. Goroutinen können gleichzeitig ausgeführt werden, wodurch die Leistung und Reaktionsfähigkeit Ihrer Anwendung verbessert wird.

Um eine Goroutine zu erstellen, verwenden Sie das Schlüsselwort go, gefolgt von der auszuführenden Funktion: go 关键字,后面跟着要执行的函数:

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

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

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

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

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

Goroutinen können auch Werte empfangen und senden. Verwenden Sie den Typ chan, um eine Pipeline zu erstellen, die die Kommunikation zwischen Goroutinen ermöglicht:

// 文件列表
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)
}
Nach dem Login kopieren
Praktisches Beispiel: parallele Suche nach Zeichenfolgen

Angenommen, wir haben eine Liste von Dateien, aus denen wir eine finden müssen Zeichenfolge. Wir können Goroutinen verwenden, um dies parallel zu tun, wodurch die Suche schneller wird:

rrreee

Anhand dieses Beispiels können wir die Vorkommen der Zeichenfolge „foo“ in jeder Datei parallel finden und so eine schnellere Leistung als bei einer Single-Threaded-Suche erzielen. 🎜

Das obige ist der detaillierte Inhalt vonWie werden Golang-Funktionen für die gleichzeitige Programmierung verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage