Rumah > Artikel > pembangunan bahagian belakang > Coroutine Golang dan pengaturcaraan sistem seperti Unix
Golang coroutine ialah mekanisme pelaksanaan serentak yang dicipta melalui kata kunci goroutine dan digunakan untuk pengaturcaraan sistem seperti Unix. Ia melaksanakan komunikasi antara coroutine melalui saluran dan boleh digunakan dalam pelayan web serentak untuk meningkatkan prestasi dan kebolehskalaan dalam amalan.
Coroutines ialah mekanisme pelaksanaan serentak yang ringan yang boleh meningkatkan prestasi aplikasi, terutamanya apabila menangani tugasan yang serentak tinggi dan IO-intensif. Bahasa Golang menyediakan sokongan coroutine yang berkuasa, menjadikannya pilihan ideal untuk pengaturcaraan sistem seperti Unix.
Di Golang, anda boleh menggunakan kata kunci goroutine
untuk mencipta coroutine: goroutine
关键字创建协程:
package main import ( "fmt" "runtime" ) func main() { go func() { fmt.Println("这是另一个协程!") }() runtime.Gosched() // 主动让出 CPU 给其他协程 }
上述代码创建了一个协程,该协程在 main
函数之外执行,并打印一条消息。runtime.Gosched()
package main import ( "fmt" "time" ) func main() { // 创建一个有缓冲的通道,存放整数 ch := make(chan int, 10) // 在一个协程中向通道发送数据 go func() { for i := 0; i < 10; i++ { ch <- i time.Sleep(100 * time.Millisecond) // 延迟发送数据 } close(ch) // 关闭通道,表示不再发送数据 }() // 在另一个协程中从通道读取数据 go func() { for { v, ok := <-ch if !ok { break // 通道已关闭 } fmt.Println(v) } }() time.Sleep(1100 * time.Millisecond) // 等待协程执行完毕 }Kod di atas mencipta coroutine, yang berada dalam
utama code> dilaksanakan di luar fungsi dan mencetak mesej. Fungsi <code>runtime.Gosched()
secara aktif mengeluarkan sumber CPU dan membenarkan coroutine lain dijalankan. Komunikasi SaluranSaluran ialah mekanisme yang digunakan untuk komunikasi antara coroutine di Golang. Ia adalah kaedah komunikasi yang selamat jenis dan tidak menyekat: package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!\n") }) // 使用 Goroutine 同时监听多个端口 go http.ListenAndServe(":8080", nil) go http.ListenAndServe(":8081", nil) select {} // 阻塞主协程,保持服务器运行 }
rrreee
Dengan menggunakan coroutine, pelayan ini boleh Memproses permintaan pada berbilang port serentak, meningkatkan kebolehskalaan dan prestasi. 🎜Atas ialah kandungan terperinci Coroutine Golang dan pengaturcaraan sistem seperti Unix. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!