chan 是什么
一个变量,但这个变量有点特殊:创建之后,如果不设置它的话,读它的地方会阻塞。
通过这样一种特性实现了 goroutine 的通信。
缓冲机制
c := make(chan int , 1024)
后面的 1024就是指的缓冲区的大小,写的时候,如果缓冲区不慢。则写入操作不会阻塞。
select
监控一系列的文件句柄,一但一个发生变化,就返回。
select{ case <-chan1: case chan2<-1: default: }
一个变量,但这个变量有点特殊:创建之后,如果不设置它的话,读它的地方会阻塞。
通过这样一种特性实现了 goroutine 的通信。
c := make(chan int , 1024)
后面的 1024就是指的缓冲区的大小,写的时候,如果缓冲区不慢。则写入操作不会阻塞。
监控一系列的文件句柄,一但一个发生变化,就返回。
select{ case <-chan1: case chan2<-1: default: }
一个变量,但这个变量有点特殊:创建之后,如果不设置它的话,读它的地方会阻塞。
通过这样一种特性实现了 goroutine 的通信。
c := make(chan int , 1024)
后面的 1024就是指的缓冲区的大小,写的时候,如果缓冲区不慢。则写入操作不会阻塞。
监控一系列的文件句柄,一但一个发生变化,就返回。
select{ case <-chan1: case chan2<-1: default: }