Bagaimana untuk mencipta memori bersama Goroutine dalam Go?

WBOY
Lepaskan: 2024-06-02 11:32:57
asal
982 orang telah melayarinya

Memori dikongsi Goroutine boleh dilaksanakan melalui saluran: Cipta saluran untuk menentukan jenis elemen. Mulakan Goroutine untuk menulis data ke saluran. Gunakan gelung julat dalam Goroutine utama untuk membaca data daripada saluran. Penyelesaian penulisan ditunjukkan dengan menutup saluran.

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

Bagaimana untuk mencipta memori bersama Goroutine dalam Go?

Dalam Go, memori bersama dilaksanakan melalui saluran. Saluran pada asasnya ialah baris gilir pertama masuk dahulu (FIFO) untuk menghantar dan menerima nilai antara Goroutines.

Kes praktikal

Mencipta memori bersama Goroutine adalah sangat mudah. Berikut ialah contoh kod:

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()
}
Salin selepas log masuk

Penjelasan

  • Apabila anda membuat saluran, anda perlu menentukan jenis elemennya (dalam kes ini, int). int)。
  • go 语句启动一个新的 Goroutine,并将一个函数作为参数传递。
  • 在 Goroutine 中,我们使用一个 for 循环向 channel 写入数据。
  • 当 Goroutine 完成时,可以使用 close(ch)
  • Pernyataan go memulakan Goroutine baharu dan melepasi fungsi sebagai parameter.
  • Dalam Goroutine, kami menggunakan gelung for untuk menulis data ke saluran.

Apabila Goroutine selesai, anda boleh menggunakan close(ch) untuk menutup saluran.

🎜Dalam Goroutine utama, kami menggunakan gelung julat untuk membaca data daripada saluran. Gelung julat tidak akan keluar sehingga saluran ditutup. 🎜🎜🎜Dengan menggunakan saluran untuk memori dikongsi, kami boleh menghantar data antara Goroutine dengan selamat. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mencipta memori bersama Goroutine dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!