Concurrency with Goroutines and Channels
Launch thousands of lightweight goroutines, coordinate them with channels, and avoid the races that catch everyone once.
Prerequisites: comfort with Go functions and basic types; Go Fundamentals and Tooling.
Version note: verified against current docs as of July 2026, targeting the common Go 1.25/1.26 feature set.
A goroutine costs a few kilobytes of stack and the runtime multiplexes thousands of them onto a handful of OS threads, so "just spawn a goroutine" is genuinely cheap in Go in a way it isn't with OS threads in most other languages. Channels give goroutines a safe way to hand data to each other instead of sharing memory and hoping. This project builds a small concurrent URL-status checker, then finds and fixes a deliberately introduced data race.
Launch goroutines and wait for them, then coordinate with channels
Limit concurrency with a worker pool
Find a race with the race detector
Secret Mission: A rate-limited pipeline
Before You Go
Test what you just learned
Self-testing is one of the best ways to retain new skills. Unlock project quizzes to check your understanding.
Log in to unlock0 / 6 complete
