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
并发实例
互斥锁和读写锁
互斥锁表示无论是读操作还是写操作都会被阻塞 不适合大量读变量的情况
读写锁表示读操作可以多个同时进行 只有写操作会被阻塞 读写锁的执行效率高于互斥锁