Gorouting 概念
Gorouting 是 go 语言的并发体
channel 是实现多个 Goroutine 之间进行通信的机制
每一个 channel 都有一个特殊的类型 channel 支持的传输的数据类型, 指定 channel 能够在不同的 goroutine 之间传递什么类型的数据
创建一个 channel
make(chan int) 创建一个无缓存传递整数类型的 channel
make(chan int,1) 创建一个缓存空间为 1 的整数类型的 channel
channel 分为无缓存和有缓存的 默认创建的是无缓存的
无缓存的 channel 写一个数据进去后必须读取之后才能继续写入 没有读取之前会一直处于阻塞状态, 无法继续向此 channel 继续写入数据
有缓存的 channel 能连续写入不超过缓存空间的数据, 缓存空间没有写满之前是不会阻塞的
有缓存信道 channel
并发实例
互斥锁和读写锁
互斥锁表示无论是读操作还是写操作都会被阻塞 不适合大量读变量的情况
读写锁表示读操作可以多个同时进行 只有写操作会被阻塞 读写锁的执行效率高于互斥锁
来源: http://www.bubuko.com/infodetail-3458533.html