下面代碼的 Unbounded 實現摘自grpc/internal/buffer/unbounded.go,
它沒有選擇使用帶容量的channel,而是另外使用了一個list來備份積壓的消息,這裏我猜有兩個緣由code

  1. 使用這種方式channel變成了一個任意長度的channel,不用考慮channel被寫滿致使的問題。
  2. 這裏爲何不直接使用list + mutex,由於須要channel的特性來隔離goroutine。