Go 带有两个goroutine的乒乓球
示例
package main
import (
"fmt"
"time"
)
//ping程序打印ping并等待乒乓球
func pinger(pinger <-chan int, ponger chan<- int) {
for {
<-pinger
fmt.Println("ping")
time.Sleep(time.Second)
ponger <- 1
}
}
//ponger打印一个pong,然后等待ping
func ponger(pinger chan<- int, ponger <-chan int) {
for {
<-ponger
fmt.Println("pong")
time.Sleep(time.Second)
pinger <- 1
}
}
func main() {
ping := make(chan int)
pong := make(chan int)
go pinger(ping, pong)
go ponger(ping, pong)
//主goroutine通过发送到ping通道来启动ping/pong
ping <- 1
for {
//阻塞主线程直到中断
time.Sleep(time.Second)
}
}在GoPlayground中运行此代码的稍作修改的版本
热门推荐
10 圆圆的祝福语简短
11 姐姐女儿结婚祝福语简短
12 送灯祝福语简短独特
13 晚儿子生日祝福语简短
14 婆婆生日祝福语短语简短
15 发廊元旦祝福语大全简短
16 收生日红包祝福语 简短
17 哥哥考大学祝福语简短
18 结婚多层蛋糕祝福语简短