golang协程并发同步-条件变量

条件变量:到一定条件或事件再处理数据

用于很典型的生成-消费模型

func main(){
	proch := make(chan bool,1)
	conch := make(chan bool,1)
	wg := sync.WaitGroup{}
	wg.Add(2)
	go consume(conch,proch,&wg)
	go producer(proch,conch,&wg)
	proch<-true
	wg.Wait()
}
func consume(conch chan bool,proch chan bool,wg *sync.WaitGroup)  {
	for i:=0;i<5;i++{
		fmt.Println("杀",<-proch)
		conch<-true//唤醒生成者
	}
	wg.Done()
}
func producer(proch chan bool,conch chan bool,wg *sync.WaitGroup){
	for i:=0;i<5;i++{
		fmt.Println("闪",<-conch)
		proch<-true//唤醒消费者
	}
	wg.Done()
}

你可能感兴趣的:(golang协程并发同步)