Go ialah bahasa pengaturcaraan sumber terbuka yang direka untuk membina perisian yang mudah, boleh dipercayai dan cekap. Salah satu ciri yang paling ketara ialah keupayaan pengaturcaraan serentak yang berkuasa. Melalui ciri konkurensi bahasa Go, pemproses berbilang teras boleh digunakan dengan lebih baik untuk mencapai pemprosesan selari yang cekap dan meningkatkan prestasi dan kelajuan program.
Dalam bahasa Go, melaksanakan pengaturcaraan serentak bergantung terutamanya pada goroutine dan saluran. Goroutine ialah utas ringan dalam bahasa Go yang boleh membuat dan mengurus sejumlah besar tugas serentak dengan mudah. Saluran ialah saluran paip yang digunakan untuk komunikasi dan pemindahan data antara goroutine.
Yang berikut akan menggunakan beberapa contoh kod khusus untuk menunjukkan cara menggunakan goroutine dan saluran untuk melaksanakan pengaturcaraan serentak dalam bahasa Go.
package main import ( "fmt" "time" ) func task(id int) { for i := 0; i < 5; i++ { fmt.Printf("Task %d: %d ", id, i) time.Sleep(time.Second) } } func main() { for i := 0; i < 3; i++ { go task(i) } time.Sleep(6 * time.Second) // 等待所有goroutine执行完毕 }
Dalam kod di atas, 3 goroutine dicipta melalui penyataan go task(i)
untuk melaksanakan fungsi task
di pada masa yang sama. Setiap goroutine akan mengeluarkan status pelaksanaan 5 tugasan dan menunggu semua goroutine menyelesaikan pelaksanaan melalui time.Sleep
. go task(i)
语句创建了3个goroutine来同时执行task
函数,每个goroutine都会输出5次任务的执行情况,通过time.Sleep
来等待所有goroutine执行完毕。
package main import "fmt" func producer(ch chan int) { for i := 0; i < 5; i++ { ch <- i } close(ch) // 关闭channel } func consumer(ch chan int) { for { val, ok := <-ch if !ok { break } fmt.Printf("Received: %d ", val) } } func main() { ch := make(chan int) go producer(ch) go consumer(ch) select {} // 阻塞主goroutine }
在上面的代码中,通过producer
函数向channel发送数据,通过consumer
函数从channel接收数据,通过close(ch)
来关闭channel。通过select {}
rrreee
Dalam kod di atas, data dihantar ke saluran melalui fungsiproducer
code>close(ch) untuk menutup saluran. Gunakan pernyataan select {}
untuk menyekat goroutine utama supaya atur cara boleh terus berjalan sehingga semua tugasan selesai. 🎜🎜Melalui contoh kod ringkas di atas, anda dapat melihat bahawa bahasa Go menyediakan sokongan pengaturcaraan serentak yang kuat melalui goroutine dan saluran, dan boleh melaksanakan pelaksanaan selari tugas serentak, penghantaran data dan komunikasi dengan mudah. Bagi pembangun yang ingin mengetahui lebih lanjut tentang pengaturcaraan serentak, menguasai kemahiran pengaturcaraan serentak bahasa Go akan menjadi cara yang baik untuk meningkatkan kemahiran dan belajar mereka. 🎜Atas ialah kandungan terperinci Panduan pengaturcaraan serentak bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!