Cara menggunakan Goroutines untuk pengkomputeran selari dalam Go

WBOY
Lepaskan: 2023-07-23 11:01:18
asal
1074 orang telah melayarinya

Cara menggunakan Goroutines untuk pengkomputeran selari dalam Go

Ikhtisar:
Bahasa Go ialah bahasa pengaturcaraan serentak yang menyokong pengkomputeran selari secara asli. Go menyediakan Goroutine dan Saluran untuk melaksanakan pengkomputeran selari. Artikel ini akan memperkenalkan cara menggunakan Goroutines untuk pengkomputeran selari dalam Go dan memberikan beberapa contoh kod.

Goroutine:
Goroutine ialah utas ringan dalam bahasa Go Ia boleh dibuat dan dimusnahkan semasa program berjalan, dan kos penciptaan, pemusnahan dan penukaran adalah sangat rendah. Dengan menggunakan Goroutines, kami boleh melaksanakan pengkomputeran selari yang cekap dalam program kami.

Langkah-langkah untuk menggunakan Goroutines untuk pengkomputeran selari adalah seperti berikut:

  1. Buat Goroutine:
    Dalam bahasa Go, anda boleh mencipta Goroutine dengan menggunakan kata kunci go, dan meletakkan kod yang perlu dilaksanakan selari ke dalam Goroutine.

Contoh Kod:

package main

import (
    "fmt"
    "sync"
)

func calculate(num int, wg *sync.WaitGroup) {
    defer wg.Done()

    result := num * 2
    fmt.Println(result)
}

func main() {
    var wg sync.WaitGroup

    for i := 1; i <= 10; i++ {
        wg.Add(1)
        go calculate(i, &wg)
    }

    wg.Wait()
}
Salin selepas log masuk

Dalam contoh di atas, kami telah mencipta fungsi yang dipanggil kira yang mengambil integer dan mencetaknya dengan mendarabkannya dengan 2. Dalam fungsi utama, kami mencipta 10 Goroutine menggunakan gelung dan lulus setiap nombor sebagai parameter kepada fungsi pengiraan. Kami menggunakan WaitGroup dalam pakej penyegerakan untuk memastikan semua Goroutines dilaksanakan.

  1. Gunakan Saluran untuk menghantar data:
    Saluran boleh digunakan untuk menghantar data antara Goroutines. Dengan mencipta Saluran dan menggunakan pengendali anak panah <- untuk menghantar dan menerima data ke Saluran.

Contoh kod:

package main

import (
    "fmt"
    "sync"
)

func calculate(num int, wg *sync.WaitGroup, result chan<- int) {
    defer wg.Done()

    result <- num * 2
}

func main() {
    var wg sync.WaitGroup
    result := make(chan int)

    for i := 1; i <= 10; i++ {
        wg.Add(1)
        go calculate(i, &wg, result)
    }

    go func() {
        wg.Wait()
        close(result)
    }()

    for res := range result {
        fmt.Println(res)
    }
}
Salin selepas log masuk

Dalam contoh di atas, kami menghantar hasil fungsi kira melalui Saluran hasil. Dalam fungsi utama, kami menggunakan fungsi tanpa nama untuk menunggu semua Goroutine selesai melaksanakan dan menutup Saluran hasil. Akhir sekali, kami menerima keputusan dalam Saluran hasil dan mencetaknya dengan menggunakan julat dalam gelung untuk.

Ringkasan:
Dengan menggunakan Goroutine dan Saluran, kami boleh mencapai pengkomputeran selari yang cekap dalam bahasa Go. Goroutines boleh digunakan untuk mencipta dan memusnahkan tugas pengkomputeran serentak dengan mudah, dan Saluran boleh digunakan untuk memindahkan data dengan mudah. Dalam aplikasi praktikal, kita boleh mencipta bilangan Goroutine yang berbeza mengikut keperluan dan memilih model pengkomputeran selari yang sesuai berdasarkan ciri tugas pengkomputeran.

Di atas ialah pengenalan dan contoh kod tentang cara menggunakan Goroutines untuk pengkomputeran selari dalam Go. Saya harap artikel ini akan membantu anda memahami pengaturcaraan serentak dalam bahasa Go.

Atas ialah kandungan terperinci Cara menggunakan Goroutines untuk pengkomputeran selari 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