Heim >Backend-Entwicklung >Golang >So verwenden Sie Golang-Parallelität

So verwenden Sie Golang-Parallelität

PHPz
PHPzOriginal
2023-04-25 15:11:15528Durchsuche

Mit der Entwicklung von Computern und der Popularisierung des Internets wird die Forderung nach hoher Leistung und hoher Parallelität immer häufiger. Gleichzeitige Programmierung ist heutzutage natürlich zu einem der Schlüsselthemen geworden, und die Golang-Sprache ist aufgrund ihrer effizienten, prägnanten und sicheren Funktionen für immer mehr Unternehmen zur Sprache der Wahl geworden. Dieser Artikel beginnt mit den Grundkonzepten der gleichzeitigen Programmierung in Golang und den Implementierungsmethoden der gleichzeitigen Programmierung in praktischen Anwendungen.

1. Was ist gleichzeitige Programmierung? Unter gleichzeitiger Programmierung versteht man die Fähigkeit eines Programms, mehrere Aufgaben gleichzeitig auszuführen, d. h. mehrere Threads führen Aufgaben innerhalb desselben Zeitraums aus. Parallelität bedeutet nicht Parallelität, denn Parallelität bezieht sich auf die gleichzeitige Ausführung mehrerer Aufgaben zum gleichen Zeitpunkt. In der Golang-Sprache können Goroutine und Channel verwendet werden, um gleichzeitige Programmierung zu implementieren.

Goroutine ist ein leichter Thread, der nur in der Go-Sprache verfügbar ist und mehrere Aufgaben gleichzeitig im selben Prozess ausführen kann, während Channel ein Kanal ist, der die Datenübertragung zwischen Goroutinen koordiniert.

2. So erstellen und starten Sie Goroutine

Wenn beim Aufrufen einer Funktion in Golang das Schlüsselwort go vor der Funktion hinzugefügt wird, kann eine neue Goroutine erstellt werden, um die Funktion auszuführen, zum Beispiel:

package main
import (
    "fmt"
    "time"
)
func main() {
    go func() {
        // 执行任务
        fmt.Println("Goroutine 运行中...")
    }()
    // 执行主线程任务
    time.Sleep(time.Millisecond * 500)
    fmt.Println("主线程执行完成!")
}
In diesem Code , über das Schlüsselwort go Eine neue Goroutine wird erstellt und Aufgaben werden darin ausgeführt. Zu diesem Zeitpunkt wird die Ausführungssequenz der Hauptfunktion nicht verlangsamt, da der Ausführungsprozess an die neu erstellte Goroutine übergeben wurde.

3. So nutzen Sie Channel für die Kommunikation

Für die gleichzeitige Programmierung ist die Kommunikation zwischen GOROUTINEs unerlässlich. Golang bietet einen Kanal zum Übertragen von Daten zwischen Goroutinen, was einen sehr bequemen und effizienten Kommunikationsmechanismus darstellt. Ein Kanal ist im Wesentlichen eine typsichere Datenwarteschlange, die mit der Make-Funktion erstellt werden kann.

Das Folgende ist ein Beispiel für die Verwendung von Channel zur Datenübertragung:

package main
import (
    "fmt"
    "time"
)
func main() {
    c := make(chan int)
    go func() {
        // 子线程向 Channel 发送数据
        for i := 1; i <= 10; i++ {
            c <- i
            time.Sleep(time.Millisecond * 100)
        }
        close(c)
    }()
    // 主线程接收 Channel 中的数据
    for num := range c {
        fmt.Println("Channel 接收到数据:", num)
    }
    fmt.Println("主线程执行完成!")
}
In diesem Code wird ein ganzzahliger Channel über die Make-Funktion erstellt. Wir fügen dem Channel im untergeordneten Thread fortlaufend Zahlen hinzu und verwenden die Sleep-Methode Der untergeordnete Thread wartet 100 ms, damit mehr Daten im Kanal vorhanden sind, wenn der Hauptthread ausgeführt wird. Verwenden Sie eine for-Range-Schleife im Hauptthread, um auf das Eintreffen von Daten im Kanal zu warten und die empfangene Anzahl jedes Mal auszugeben . Es ist zu beachten, dass Sie beim Senden von Daten an den Kanal im untergeordneten Thread die Close-Methode verwenden müssen, da sonst der Hauptthread in der Schleife wartet.

Zusammenfassung

Die gleichzeitige Programmierung in Golang ist eine schwierige Aufgabe, bei der Entwickler beim Schreiben von Code alles berücksichtigen müssen, insbesondere im Hinblick auf die gemeinsame Nutzung von Ressourcen, Deadlocks usw., was besondere Aufmerksamkeit erfordert. In tatsächlichen Anwendungen kann die Verwendung von Goroutine und Channel jedoch das Problem der Multithread-Parallelität effektiv lösen und die Programmausführung effizienter gestalten.

Als effiziente, strenge, sichere und leicht zu erlernende Sprache verfügt Golang über einen eigenen, einzigartigen Methodensatz für die gleichzeitige Programmierung, der die Arbeit von Entwicklern erheblich erleichtert.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Golang-Parallelität. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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