Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstelle ich eine Goroutine mit gemeinsamem Speicher in Go?

Wie erstelle ich eine Goroutine mit gemeinsamem Speicher in Go?

WBOY
WBOYOriginal
2024-06-02 11:32:57982Durchsuche

Shared Memory Goroutine kann über Kanäle implementiert werden: Erstellen Sie einen Kanal, um den Elementtyp anzugeben. Starten Sie eine Goroutine, um Daten in den Kanal zu schreiben. Verwenden Sie eine Bereichsschleife in der Haupt-Goroutine, um Daten aus dem Kanal zu lesen. Der Abschluss des Schreibvorgangs wird durch Schließen des Kanals angezeigt.

如何在 Go 中创建一个共享内存的 Goroutine?

Wie erstelle ich eine gemeinsame Speicher-Goroutine in Go?

In Go wird Shared Memory über Kanäle implementiert. Ein Kanal ist im Wesentlichen eine First-In-First-Out-Warteschlange (FIFO) zum Senden und Empfangen von Werten zwischen Goroutinen.

Praktischer Fall

Das Erstellen eines Shared Memory Goroutine ist sehr einfach. Hier ist der Beispielcode:

package main

import (
    "fmt"
    "sync"
)

func main() {
    // 创建一个 channel
    ch := make(chan int)
    
    // 创建 Goroutine 并启动,它将向 channel 写入数据
    var wg sync.WaitGroup
    wg.Add(1)
    go func() {
        defer wg.Done()
        
        for i := 0; i < 10; i++ {
            ch <- i
        }
        
        // 关闭 channel 表示完成
        close(ch)
    }()
    
    // 从 channel 中读取数据
    for v := range ch {
        fmt.Println(v)
    }
    
    wg.Wait()
}

Erklärung

  • Wenn Sie einen Kanal erstellen, müssen Sie seinen Elementtyp angeben (in diesem Fall int). int)。
  • go 语句启动一个新的 Goroutine,并将一个函数作为参数传递。
  • 在 Goroutine 中,我们使用一个 for 循环向 channel 写入数据。
  • 当 Goroutine 完成时,可以使用 close(ch)
  • Die go-Anweisung startet eine neue Goroutine und übergibt eine Funktion als Parameter.
  • In Goroutine verwenden wir eine for-Schleife, um Daten in den Kanal zu schreiben.

Wenn die Goroutine abgeschlossen ist, können Sie den Kanal mit close(ch) schließen.

🎜In der Haupt-Goroutine verwenden wir eine Bereichsschleife, um Daten aus dem Kanal zu lesen. Die Entfernungsschleife wird erst beendet, wenn der Kanal geschlossen wird. 🎜🎜🎜Durch die Verwendung von Kanälen für den gemeinsamen Speicher können wir Daten sicher zwischen Goroutinen übertragen. 🎜

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Goroutine mit gemeinsamem Speicher in Go?. 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