package main
import (
"sync"
)
var count = 5
func main(){
wg:=sync.WaitGroup{}
chanA :=make(chan struct{},1)
chanB :=make(chan struct{},1)
chanC :=make(chan struct{},1)
chanA<- struct{}{}
wg.Add(3)
go printA(&wg,chanA,chanB)
go printB(&wg,chanB,chanC)
go printC(&wg,chanC,chanA)
wg.Wait()
}
func printA(wg *sync.WaitGroup, chanA chan struct{}, chanB chan struct{}) {
defer wg.Done()
for i:=0;i<count;i++{
<-chanA
println("A")
chanB<- struct{}{}
}
}
func printB(wg *sync.WaitGroup, chanB chan struct{}, chanC chan struct{}) {
defer wg.Done()
for i:=0;i<count;i++{
<-chanB
println("B")
chanC<- struct{}{}
}
}
func printC(wg *sync.WaitGroup, chanC chan struct{}, chanA chan struct{}) {
defer wg.Done()
for i:=0;i<count;i++{
<-chanC
println("C")
chanA<- struct{}{}
}
}
golang goroutine顺序循环打印ABC
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 在面试中遇到了这个问题 ,这个问题主要考面试者的多线程相关的知识,包括但不限于wait/notify 锁 Vol...
- 最开始因为获取的lockSeq不是最新的,一直没有正确的结果,导致误判notifyAll只会唤醒一个线程,通过对照...
- //循环队列顺序表示,队列初始化,求队列长度,入队,出队,打印队列中的元素,求队头元素 include <stdi...