Saluran buffer ialah cara yang berkesan untuk memindahkan data dengan selamat dalam pengaturcaraan serentak fungsi Go. Mereka mencipta penimbal saiz tetap untuk menyimpan data untuk dihantar atau diterima. Gunakan make untuk mencipta saluran penimbal dan nyatakan kapasiti. Goroutine pengeluar menggunakan chan
Penggunaan saluran penimbal dalam pengaturcaraan serentak fungsi bahasa Go
Saluran penimbal sangat berguna dalam pengaturcaraan serentak fungsi bahasa Go, yang membolehkan data dihantar dengan selamat antara goroutin. Ia melakukan ini dengan mencipta penimbal saiz tetap yang menyimpan data untuk dihantar atau diterima.
Buat saluran penimbal
bufferedChannel := make(chan int, 10)
10
表示缓冲区的容量,它可以存储最多 10 个整数。
goroutine 间的通信
生产者 goroutine 可以使用 chan<-
运算符向通道发送数据:
go func() { bufferedChannel <- 42 }()
消费者 goroutine 可以使用 <-chan
Komunikasi antara goroutine
Groutine pengeluar boleh menggunakan operatorchan<-
untuk menghantar data ke saluran: go func() { fmt.Println(<-bufferedChannel) }()
<-chan kod > Operator menerima data daripada saluran: package main
import (
"fmt"
"math/rand"
"sync"
)
func main() {
// 创建一个缓冲通道
bufferedChannel := make(chan int, 10)
// 生成随机数的 goroutine
go func() {
for i := 0; i < 100; i++ {
bufferedChannel <- rand.Intn(100)
}
close(bufferedChannel) // 发送完成后关闭通道
}()
// 打印随机数的 goroutine
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
for {
value, ok := <-bufferedChannel
if !ok {
return // 通道已关闭
}
fmt.Println(value)
}
}()
wg.Wait() // 等待消费者 goroutine 结束
}
Salin selepas log masukContoh praktikalUntuk menunjukkan penggunaan saluran penimbal, mari kita tulis atur cara mudah yang menjana nombor rawak daripada goroutine pengeluar dan menyerahkannya kepada goroutine pengguna untuk pemprosesan Cetak. 🎜🎜🎜Kodnya adalah seperti berikut: 🎜🎜rrreee🎜Dalam contoh ini, kami menetapkan kapasiti penimbal kepada 10, yang bermaksud bahawa goroutine pengeluar boleh menjana 10 nombor rawak secara selari tanpa menyekat. Gelung goroutine pengguna menerima nombor rawak daripada saluran sehingga saluran ditutup. 🎜Atas ialah kandungan terperinci Cara menggunakan saluran penimbal dalam pengaturcaraan serentak fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!