- Running code with goroutines
- Detecting and fixing race conditions
- Sharing data with channels
Concurrency in Go is the ability for functions to run independent of each other.
Concurrency synchronization comes from a paradigm called communicating sequential **processes** or CSP.
CSP is a message-passing model that works by communicating data between goroutines instead of locking data to synchronize access.
The key data type for synchronizing and passing messages between goroutines is called a channel.