Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menamatkan Pelbagai Rutin Pergi Dengan Anggun Menggunakan Konteks?

Bagaimana untuk Menamatkan Pelbagai Rutin Pergi Dengan Anggun Menggunakan Konteks?

Susan Sarandon
Lepaskan: 2024-12-10 05:48:14
asal
134 orang telah melayarinya

How to Gracefully Terminate Multiple Go Routines Using Context?

Cara Menyegerakkan Berbilang Rutin Pergi dengan Konteks

Untuk menyegerakkan berbilang goroutin, membenarkannya ditamatkan apabila salah satu daripadanya kembali, konteks menyediakan berkesan penyelesaian.

Penjelasan:

Kod sampel mencipta dua goroutine. Untuk menyegerakkannya, konteks.Konteks dimulakan dan diberikan kepada kedua-dua gorout. Setiap goroutine memasuki gelung {} terpilih, mendengar mesej daripada konteks.

Apabila ralat berlaku atau syarat tertentu dipenuhi:

  1. Yang utama goroutine memanggil fungsi batal yang dikaitkan dengan konteks.
  2. Ini menghantar mesej "selesai" kepada konteks.
  3. Semua goroutine yang mendengar konteks menerima mesej ini dan ditamatkan.

Contoh Kod:

package main

import (
    "context"
    "sync"
)

func main() {

    ctx, cancel := context.WithCancel(context.Background())
    wg := sync.WaitGroup{}
    wg.Add(3)
    go func() {
        defer wg.Done()
        for {
            select {
            // msg from other goroutine finish
            case <-ctx.Done():
                // end
            }
        }
    }()

    go func() {
        defer wg.Done()
        for {
            select {
            // msg from other goroutine finish
            case <-ctx.Done():
                // end
            }
        }
    }()

    go func() {
        defer wg.Done()
        // your operation
        // call cancel when this goroutine ends
        cancel()
    }()
    wg.Wait()
}
Salin selepas log masuk

Kelebihan Menggunakan Konteks:

  • Kawalan Berpusat: Mengelakkan keperluan untuk mekanisme penyegerakan yang jelas, memastikan kod bersih.
  • Pengendalian Ralat: Jika ralat berlaku dalam satu goroutine, ia boleh memberitahu goroutine lain melalui konteks.
  • Penamatan Anggun: Goroutine menerima isyarat untuk ditamatkan secepat mungkin, menghalang kemungkinan kebocoran memori.

Atas ialah kandungan terperinci Bagaimana untuk Menamatkan Pelbagai Rutin Pergi Dengan Anggun Menggunakan Konteks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan