Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah fungsi golang mengawal pelaksanaan goroutine?

Bagaimanakah fungsi golang mengawal pelaksanaan goroutine?

PHPz
PHPzasal
2024-05-04 12:39:01932semak imbas

Fungsi Go mengawal pelaksanaan Goroutine dengan cara berikut: runtime.Goexit(): Menamatkan Goroutine semasa secara paksa. sync.WaitGroup: Tunggu sekumpulan Goroutines selesai. pilih{}: Membenarkan Goroutine menunggu salah satu daripada berbilang peristiwa dan melakukan tindakan yang sepadan berdasarkan peristiwa yang dicetuskan pertama. konteks.Konteks: Boleh digunakan untuk melepasi tarikh akhir atau membatalkan permintaan kepada Goroutines.

Bagaimanakah fungsi golang mengawal pelaksanaan goroutine?

Fungsi How Go mengawal pelaksanaan Goroutine

Bahasa pengaturcaraan Go menyokong konkurensi dan menggunakan Goroutine (benang ringan) untuk mencapai konkurensi. Goroutines boleh dibuat melalui fungsi dan dimulakan pada bila-bila masa selepas penciptaan. Artikel ini akan memperkenalkan fungsi berbeza yang digunakan untuk mengawal pelaksanaan Goroutine dan memberikan beberapa contoh praktikal.

Fungsi yang mengawal pelaksanaan Goroutine

  • runtime.Goexit(): Tamatkan Goroutine semasa secara paksa.
  • sync.WaitGroup: Tunggu sekumpulan Goroutines selesai.
  • pilih{}: Membenarkan Goroutine menunggu salah satu daripada berbilang acara dan melakukan tindakan yang sepadan berdasarkan peristiwa yang dicetuskan pertama.
  • konteks.Konteks: boleh digunakan untuk meluluskan tarikh akhir atau permintaan pembatalan kepada Goroutines.

Kes praktikal

1. Tamatkan Goroutine

package main

import (
    "fmt"
    "runtime"
    "time"
)

func main() {
    go func() {
        for {
            fmt.Println("Goroutine is running...")
            time.Sleep(1 * time.Second)
        }
    }()

    // 等待 10 秒后终止 Goroutine
    time.Sleep(10 * time.Second)
    runtime.Goexit()
}

2

4 . Gunakan konteks Batalkan Goroutine

package main

import (
    "fmt"
    "sync"
    "time"
)

func main() {
    var wg sync.WaitGroup

    // 创建 5 个 Goroutine
    for i := 0; i < 5; i++ {
        wg.Add(1)
        go func(i int) {
            fmt.Printf("Goroutine %d is running...\n", i)
            time.Sleep(1 * time.Second)
            wg.Done()
        }(i)
    }

    // 等待所有 Goroutine 完成
    wg.Wait()
}

Atas ialah kandungan terperinci Bagaimanakah fungsi golang mengawal pelaksanaan goroutine?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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