The Go programming language has native support for concurrency in the form of goroutines (light-weight threads) and channels (FIFO queues). This gives users a very convenient means for writing modern concurrent software and feels almost like magic. But we know there is no magic.
In this talk, Dmitry will look inside of the Go scheduler and expose how this magic is implemented. First, he will give an overview of the main components of the scheduler and overall operation. Then, take a closer look at some specific aspects like blocking system call handling and growable stacks implementation. Lastly, Dmitry will speculate about potential future improvement to the scheduler.