[Go] Go语言中管道的好处与实现

522 阅读1分钟

好处

  • 在语言级别上提供的goroutine间的通讯方式。
  • 线程安全:多 goroutine 访问时,不需要加锁,就是说 channel 本身就是线程安全的。
  • 可以使用chan的读写操作来阻塞go协程,实现协程之间的协作:同时开10个协程,10个协程共同完成一个任务,然后在main函数中通过管道进行阻塞,当10个协程都完成时才结束mian函数。

实现

  • channle 本质就是一个阻塞队列,数据是先进先出【FIFO : first in first out】。
  • 经典的生产者消费者模式

Reference