简介
并发不是并行,并发更多是关注程序设计层面的,并行是程序运行层面的。另外需要注意的是 golang 中对于无缓冲的 channel 在接收到一个数据时候就会直接陷入阻塞但是对于有缓冲的 channel,在 channel 满载后再有一个数进入才会陷入阻塞
并发编程中最常见的例子就是生产者消费者模型了,大致就是生产者生产一批数据,放到结果队列中,消费者从结果队列中取出数据来消费,这样生产者和消费者就是两个异步的流程,当结果队列中没有数据,消费者就陷入了饥饿等待的状态,当结果队列满的时候,生产者就进入了等待生产的状态
生产者消费者模型
// Producer 生产者
func Producer(line chan<- int) {