🔗 Concurrency in Go
Concurrency is hard, but the primitive building blocks of CSP in Go - goroutines and channels - can make things simpler.
We glanced at the six chapters of Concurrency in Go, and learned a bit about the problem setting, goroutine sizes, context switch times and patterns.
The notes can be found here:
In the book, the perf tool is used to benchmark context switch times of the kernel - and to compare it with context switch times in the Go scheduler.
Sidenote: you can see the number of context switches with various tools, e.g. dstat.
Another performance debugging tool are flame graphs, which can be extended in time, e.g. with flamescope:
Apart from technical topics, we discussed adoption stories of Go in companies. It’s impossible to replace a huge system at once, but people might be surprised by how resource efficient Go can be - and get curious.