首页 > 其他 > 详细

从零开始学Go之并发(三):Select

时间:2019-07-02 14:18:37      阅读:80      评论:0      收藏:0      [点我收藏+]

select 是 Go 中类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收

select 随机执行一个可运行的 case,如果没有 case 可运行,它将阻塞,直到有 case 可运行

一个默认的子句应该总是可运行的

当select中的其它分支都没有准备好时,default分支就会执行

select {

case 操作

}

 select {
 case c <- x:
  x, y = y, x+y
 case <-quit:
  fmt.Println("quit")
  return
 }

例子:

func main() {
 tick := time.Tick(100 * time.Millisecond)
 boom := time.After(500 * time.Millisecond)
 for {
  select {
  case <-tick:
    fmt.Println("tick.")
  case <-boom:
    fmt.Println("BOOM!")
    return
  default:
    fmt.Println(" .")
    time.Sleep(50 * time.Millisecond)
  }
 }
}

运行结果:

.

? .

tick.

.

.

tick.

.

.

tick.

.

.

tick.

.

.

tick.

BOOM!

从零开始学Go之并发(三):Select

原文:https://www.cnblogs.com/VingB2by/p/11119882.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!