Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency
Hydra2 HN recommenders · 2020–2026
47K views · talk · evergreen · Uploaded 2019-10-14
Go runtime contributor Dmitry Vyukov looks inside the Go scheduler, explaining how goroutines and channels are implemented. He covers the main scheduler components and overall operation, then goes into details such as preemption and stacks.
Recommended as a good watch on how Go's M:N:P scheduler works and why it was designed that way compared with alternative schemes.
49:55How Python was Shaped by leaky Internals, Armin Ronacher, Flask framework
Видео с мероприятий {speach!
36:45Rich Harris - Rethinking reactivity
You Gotta Love Frontend
1:12:27CppCon 2015: Andrei Alexandrescu “std::allocator...”
CppCon
51:18Lexical Scanning in Go - Rob Pike
GoogleFOSSSydney
1:31:06William Byrd on "The Most Beautiful Program Ever Written" [PWL NYC]
PapersWeLove
1:02:42Preventing the Collapse of Civilization / Jonathan Blow (Thekla, Inc)
DevGAMM
42:15"Performance Matters" by Emery Berger
Strange Loop Conference
1:48:55The Thirty Million Line Problem
Molly Rocket
3 comments from Hacker News
I guess that's because they are "intros," and often multi-core event loops are implemented by the language runtime or some threadpool library. This is a good watch: Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency (Oct 14, 2019) [VIDEO]
Go depends on the fact that it can track all pointers, and when it needs to resize stacks, it can update them. Previous versions of Go used segmented stacks, which are theoretically possible, if Zig really wanted (would need compiler support), but they have nasty performance side-effects, see [VIDEO]
[VIDEO] - Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency This one notably also explains the design considerations for golangs M:N:P in comparison to other schemes and which specific challenges it tries to address.