1.不同于传统意义上并发编程需要共享内存,Goroutine的channel采用消息模型避免直接的内存共享,降低了信息处理的复杂度

2.Channel只涉及传指针,因为make(chan)返回的是指针类型

  • chan := make(chan int) //初始化一个int类型的chan
  • chan <- v // 把v发送到通道chan
  • v := <- chan // 从chan接受数据并赋值给v

发送数据到channel主要就是做两件事:

  • 如果没有可用的reciever, 数据入列,否则线程阻塞
  • 如果有可用reciever,把数据从sender的栈空间拷贝到reciever的栈空间