
Buffered vs Unbuffered Channels in Go: How the Size Changes Behavior
In Go, a channel's buffer size is not a tuning knob. It changes what the channel means. Here is when to use each, and why a buffer of 1 is a signal.
Tag archive

In Go, a channel's buffer size is not a tuning knob. It changes what the channel means. Here is when to use each, and why a buffer of 1 is a signal.

Distribute work across N goroutines and merge results with channels: worker pools, WaitGroup close coordination, and keeping order when it matters.

The default case turns a blocking channel op into a try. It also invites a busy loop that pins a CPU core. Here is how to use it right.

Build Go pipelines from channel-connected stages: cancellation with context, closing channels correctly, and backpressure from unbuffered stages.
Go as a UNIX
SMS open rates beat email by 5x but the review-completion rate is closer than you'd think. Here's the data, the legal compliance picture (10DLC, TCPA), and the right channel for your business type.

Originally published at norvik.tech Introduction Dive deep into Go's concurrency model,...
Mastering Go channels: buffered vs unbuffered, select, fan-out, fan-in and worker pool. The essential patterns for making your goroutines communicate without race conditions.
Introduction to Golang's Multithreading Model Golang's approach to multithreading is a...
Introduction & Problem Statement In the world of high-performance Go applications, the...
How to Implement Concurrency in Go 1.24 with Goroutines and Channels for 100k+ Concurrent...
After a few years writing production Go, I stopped thinking of chan as a data pipe and context as a parameter. They're both lifecycle primitives — chan draws the boundary of 'how many alive', context draws the boundary of 'when to die'. Here's why that mental model changes the code you write.