unbufferd channel

  1. 未被关闭的channel:

    • 发送:阻塞,直到接收者从channel将数据取走
    • 接收:阻塞,直到有发送者将数据发到channel
  2. 已被关闭的channel:

    • 发送:panic
    • 接收:数据全部被接收后,再读取会直接读到0值

buffered channel

  1. 未满的channel:
    • 发送:无阻塞
    • 接收:无阻塞
  2. 已满的channel:
    • 发送:阻塞,直到有新的缓存空间
    • 接收:无阻塞
  3. 空channel:
    • 发送:无阻塞
    • 接收:阻塞,直到有新的数据到达
文章目录