~/talk

Implementing Parallelism

Talkat GopherCon Europe 2025 · 2025-06-16..06-19· [go, embedded-and-hardware]
links:none on file
slides:none on file

TinyGo now runs goroutines in parallel on Linux, macOS and the RP2040 dual-core by mapping one goroutine to one OS thread, claiming simpler semantics at the cost of more RAM and context switches. It implements synchronization with futexes and a futex wrapper, refactors channels to use locks, changes garbage collection to stop-the-world via inter-core interrupts on bare metal, and uses a global lock for select to avoid deadlocks. RP2040 Mandelbrot rendering shows clear speedup; macOS may hit ~2000 thread limits.

AI-written summary · about

  1. 0:00Introduction to parallelism and concurrency
  2. 1:28TinyGo multi-core support
  3. 3:38One thread per goroutine
  4. 5:07Parallelism changes in TinyGo
  5. 6:08What are futexes
  6. 9:19sync.Group with futexes
  7. 11:12Channels for parallelism
  8. 11:58Select without deadlocks
  9. 13:41Bare metal multi-core
  10. 15:51Demo on RP2040
  11. 17:20TinyGo parallelism future
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.