for select 阻塞着等待生产者生产的东西

    技术2022-07-11  105

    package main import ( "fmt" "time" ) func main() { strChan := make(chan int, 1) n := 0 // 生产者不停的生产,如果通道有数据,就会把消费者唤醒 go func() { for { fmt.Println("loop") time.Sleep(time.Second) n++ if n%5 > 2 { strChan <- n } } }() // 消费者 for { select { // 如果没有信息到来,则会阻塞到select上 case data := <-strChan: fmt.Println(data) } fmt.Println("for loop") } fmt.Println("end") } /* loop loop loop loop 3 for loop loop 4 for loop loop loop loop ... */

     

    Processed: 0.010, SQL: 9