Rumah >pembangunan bahagian belakang >Golang >Strategi pemprosesan saluran paip komunikasi fungsi Golang
Apabila menggunakan saluran paip untuk komunikasi, untuk mengelakkan penerima saluran paip daripada disekat sepanjang masa, Golang menyediakan dua strategi pemprosesan tamat masa: gunakan Konteks untuk menetapkan had masa atau gunakan pilih untuk mendengar berbilang saluran paip Apabila penerima saluran paip tidak menerima data, kedua-dua strategi ini akan habis masa.
Strategi pemprosesan tamat masa talian paip komunikasi fungsi Golang
Saluran paip ialah cara biasa komunikasi antara proses di Golang. Walau bagaimanapun, apabila hujung penerimaan saluran paip tidak dapat menerima data, ia akan menyekat selama-lamanya. Untuk mengelakkan penyekatan ini, kita boleh menggunakan operasi penerimaan paip dengan tamat masa.
Strategi pemprosesan tamat masa
Terdapat dua strategi pemprosesan tamat masa utama:
Kes praktikal
Berikut ialah contoh operasi penerimaan saluran paip menggunakan strategi pemprosesan tamat masa Konteks:
package main import ( "context" "fmt" "log" "sync/atomic" "time" ) func main() { // 创建一个管道 ch := make(chan int) ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() // 并发地将数据发送到管道 go func() { for i := 0; i < 10; i++ { ch <- i } }() // 使用 Context 超时接收数据 go func() { var total uint64 for { select { case <-ctx.Done(): fmt.Println("Timeout reached!") return case value := <-ch: total += uint64(value) } } }() log.Printf("Total: %d", total) }
Contoh operasi penerimaan saluran paip menggunakan strategi pemprosesan tamat masa pilih:
rreeeAtas ialah kandungan terperinci Strategi pemprosesan saluran paip komunikasi fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!