Go言語のチャネル容量は、バッファードかアンバッファードのいずれかです。アンバッファードチャネルは容量がなく、レシーバーが準備するまで送信者がブロックされるため、操作が同期的に行われます。バッファードチャネルは宣言時に定義された固定の容量があり、バッファが満タンになるまで送信者がブロックされず、非同期的な振る舞いを可能にします。チャネルのクローズは、パニックを引き起こす送信を禁止し、レシーバーがバッファが空になるまで値を受け取ることができます。クローズされたチャネルは、受信操作からの2番目の戻り値で検出できます。Goは、受信専用と送信専用のチャネルをサポートし、チャネルの使用をそれぞれ受信や送信の値に制限します。これらのチャネル型は、明示的なロックや条件変数なしでgoroutines間の同期と通信を促進します。バッファードチャネルは、一定の程度まで送信者とレシーバーを切り離し、非同期的な振る舞いを導入します。
dev.to
[Golang] Understanding Unbuffered and Buffered Channels
Create attached notes ...
