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 祝福语驱散霉运的话简短