Rumah >pembangunan bahagian belakang >Golang >Golang menggunakan Saluran untuk melaksanakan pengagihan tugas dan pengagregatan hasil
Golang menggunakan Saluran untuk melaksanakan pengagihan tugas dan pengagregatan hasil
Pengenalan:
Dalam pengaturcaraan serentak, pengagihan tugas dan pengagregatan hasil adalah keperluan biasa. Saluran di Golang menyediakan cara yang ringkas dan berkesan untuk melaksanakan corak pengagihan tugas dan pengagregatan hasil ini. Artikel ini akan memperkenalkan cara menggunakan Saluran untuk melaksanakan pengagihan tugas dan pengagregatan hasil serta memberikan contoh kod yang sepadan.
Berikut ialah contoh kod ringkas yang melaksanakan proses mendapatkan tugas daripada sumber data luaran dan menghantar tugasan ke saluran tugas:
package main import ( "fmt" ) func main() { tasks := make(chan string) go func() { for i := 0; i < 10; i++ { task := fmt.Sprintf("Task %d", i) tasks <- task } close(tasks) }() for task := range tasks { fmt.Println(task) } }
Dalam contoh di atas, kami mencipta tugas saluran jenis rentetan dan menghantar 10 tugas ke saluran melalui fungsi tanpa nama. Akhirnya, tugasan dalam saluran dilalui melalui kata kunci julat dan kandungan tugasan adalah output.
Berikut ialah contoh kod ringkas yang melaksanakan proses menghantar hasil tugasan yang dilengkapkan oleh coroutine kerja ke saluran hasil, dan mengagregatkan hasil dengan merentasi saluran hasil:
package main import ( "fmt" ) func worker(id int, tasks <-chan string, results chan<- string) { for task := range tasks { result := fmt.Sprintf("Worker %d processed %s", id, task) results <- result } } func main() { tasks := make(chan string) results := make(chan string) // 创建 3 个工作协程 for i := 1; i <= 3; i++ { go worker(i, tasks, results) } // 向任务通道发送 10 个任务 for i := 1; i <= 10; i++ { task := fmt.Sprintf("Task %d", i) tasks <- task } close(tasks) // 遍历结果通道,输出每个任务的处理结果 for result := range results { fmt.Println(result) } }
Dalam contoh di atas, kami mencipta Dua saluran, tugasan dan keputusan, dibuat pengagihan tugas dan pengagregatan hasil dicapai dengan menghantar tugasan ke saluran tugas dan menerima keputusan melalui saluran keputusan. Pada masa yang sama, 3 coroutine kerja dicipta untuk memproses tugasan dan hasil pemprosesan dihantar ke saluran keputusan. Akhirnya, keputusan diagregatkan dengan merentasi saluran hasil dan hasil pemprosesan setiap tugas adalah output.
Ringkasan:
Saluran di Golang menyediakan cara yang ringkas dan berkesan untuk melaksanakan agihan tugas dan corak pengagregatan hasil. Melalui pengagihan tugas, tugasan dihantar ke coroutine kerja untuk pemprosesan serentak melalui pengagregatan hasil, hasil tugasan yang diselesaikan oleh coroutine kerja diagregatkan. Corak ini menjadikan pengaturcaraan serentak lebih mudah dan lebih cekap.
Menggunakan Saluran di Golang, kami boleh menggunakan sumber sistem dengan lebih baik dan meningkatkan kecekapan pemprosesan tugas. Dalam contoh kod, kami hanya menghantar tugasan ke saluran Dalam aplikasi sebenar, mungkin perlu untuk menimbal saluran, menggunakan saluran penimbal, dsb. untuk mengoptimumkan lagi proses pengagihan tugas dan pengagregatan hasil.
Melalui pengenalan dan contoh kod artikel ini, saya percaya pembaca boleh memahami cara menggunakan Saluran untuk mencapai pengagihan tugas dan pengagregatan hasil, supaya dapat menggunakan teknologi pengaturcaraan serentak dengan lebih baik.
Atas ialah kandungan terperinci Golang menggunakan Saluran untuk melaksanakan pengagihan tugas dan pengagregatan hasil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!