Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah anda membaca daripada berbilang saluran serentak di Golang?

Bagaimanakah anda membaca daripada berbilang saluran serentak di Golang?

Patricia Arquette
Lepaskan: 2024-11-07 10:31:03
asal
982 orang telah melayarinya

How do you read from multiple channels simultaneously in Golang?

Membaca Berbilang Saluran Serentak di Golang

Semasa anda terjun ke dunia Golang, anda mungkin menghadapi tugas untuk mencipta sebarang-untuk -satu saluran di mana berbilang gorout masuk ke satu destinasi. Artikel ini akan menyelidiki strategi untuk mencapai matlamat ini di Golang.

Contoh Senario

Pertimbangkan senario di mana dua goroutin, numgen1 dan numgen2, menjana nombor secara serentak dan menuliskannya ke saluran num1 dan num2, masing-masing. Matlamat anda adalah untuk mencipta proses berasingan, addnum, yang menjumlahkan nombor yang diterima daripada num1 dan num2 dan menulis hasilnya kepada jumlah saluran.

Menggunakan Penyata Pilih

Untuk membaca daripada berbilang saluran secara serentak, anda boleh menggunakan penyataan pilih. Dalam blok pilih, setiap kes mewakili saluran yang ingin anda baca. Kes pertama yang menerima mesej akan melaksanakan blok kodnya yang sepadan.

Berikut ialah contoh menggunakan pernyataan pilih:

func main() {

  c1 := make(chan int)
  c2 := make(chan int)
  out := make(chan int)

  go func(in1, in2 <-chan int, out chan<- int) {
    for {
      sum := 0
      select {
      case sum = <-in1:
        sum += <-in2

      case sum = <-in2:
        sum += <-in1
      }
      out <- sum
    }
  }(c1, c2, out)
}
Salin selepas log masuk

Groutine ini akan berjalan selama-lamanya, membaca secara berterusan dan menjumlahkan nilai daripada saluran c1 dan c2. Saluran keluar menyediakan cara untuk menggunakan jumlah. Untuk menamatkan goroutine, anda perlu menutup kedua-dua c1 dan c2 dan kemudian tutup sebelum keluar.

Atas ialah kandungan terperinci Bagaimanakah anda membaca daripada berbilang saluran serentak di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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