Applied Go Quick Bits 007: Are goroutines threads?
Channel: AppliedGo
Date: 26/01/2022

Struggling with concurrent programming? Take a look at the Concurrency Deep Dive course at https://appliedgo.com

Goroutines are Go's central concurrency mechanism. They are so super easy to create an manage that you might wonder how they are implemented. Are they plain old system threads in disguise? Not at all. This video shows how goroutines are mapped onto threads, and how the system does the heavy lifting behind the scenes to manage hoards of goroutines, get blocking system calls out of the way, and keep up the flow through the work-stealing scheduler.

Further readings about the Go scheduler:

JDB's concise article – a must-read: https://rakyll.org/scheduler/
Daniel Morsing's article goes into quite some details: https://morsmachine.dk/go-scheduler
And Ardan Labs even have a 3-part series on the topic: https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part1.html
The original draft of the work-stealing scheduler: https://golang.org/s/go11sched

* * *

This is the Applied Go Quick Bits series, delivering bite-sized Go snacks right to your screen.

More Go insights on my blog: https://appliedgo.net

* * * 

The Gophers in the video are created by me, based on the original Gopher by Renée French.

For the other images I used, big shout-outs to these artists on Pixabay:

OpenClipart-Vectors – fireplace, pan, phone box, table
katya-guseva0 – flames
Coverr-Free-Footage – pan contents
Diskette96 – chef's hat
simisi1 – cooking spoon
Myriams-Fotos – threads and needle
Kirgiz03 – grumpy cat
Hans – feather