Channel

//channel默认为双向通道,也可为单向通道

//只写单向通道  只接受通道
var intchan chan<- int
intchan <-1
//只读单向通道  只发送通道
var intchan <-chan int
v := <-intchan
//使用close()关闭通道
close(intchan)

<-ch //表示从ch通道中读取数据,这个表达式会一直堵塞,知道有数据可以读
//堵塞示例:
func main(){
  var c = make(chan int)
  go func(){
    fmt.Println("Helloween")
    <-c
  }()
  c<-1
}
//主线程中会deadlock
//实现了协程同步问题,利用了不同协程使用channel会阻塞的原理
//上面代码同下一样
func main(){
  var c = make(chan int)
  go func(){
    fmt.Println("Helloween")
    c<-1
  }()
  <-c
}
posted @ 2022-03-04 16:48  melody#787  阅读(211)  评论(0)    收藏  举报