Go并发编程机制

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

 并发实例

 

 

   互斥锁和读写锁
       互斥锁表示无论是读操作还是写操作都会被阻塞 不适合大量读变量的情况
       读写锁表示读操作可以多个同时进行 只有写操作会被阻塞 读写锁的执行效率高于互斥锁

 

猜你喜欢

转载自www.cnblogs.com/yxh168/p/12456246.html
今日推荐