goroutine:
由GO运行环境管理的轻量级线程
channel:
有类型的管道,操作符为 <- 数据流向箭头指向的方向
使用make(chan 缓冲数据类型 缓冲区长度)来创建
使用close(chan)来关闭管道,只有发送者才允许关闭管道
例
ch := make(chan int 10)
ch <- 10
a := <- ch
或
a := int(0)
a = <- ch
单向管道:单向管道只能用于发送或接收数据。
ch1 := make( chan int)
ch2 := <-chan int(ch1) //ch2就被定义为一个只能读取的channel
ch3 := chan<- int(ch1) //ch3就被定义为一个只能接收的channel
select:
为了让一个goroutine能在多个通讯操作上进行等待,可以使用select
select会阻塞,直到某个分支中的通讯准备好后可以继续执行。
当有多个通讯准备好时,会随机选择一个进行通讯。
同步:
同步必须使用到锁,sync包中提供了两种锁:sync.Mutex 和 sync.RWMutex。
Mutex是最简单的互斥量。
RWMutex也是一种互斥量,不过在读操作时,会阻止写,但不会阻止读。
有疑问加站长微信联系(非本文作者)