What if concurrency wasn't about locks, but about better software design? Go's primitives enable a more natural way to build systems by composing independent processes.
#1about 6 minutes
Concurrency as a natural model for software design
Modern software can be structured like the real world by composing independent processes that communicate with each other.
#2about 4 minutes
The evolution from threads to modern concurrency
Modern runtimes manage lightweight processes, moving beyond complex, error-prone threading with mutexes to encapsulated state and message passing.
#3about 6 minutes
Actor model vs communicating sequential processes (CSP)
Go's concurrency is built on the Communicating Sequential Processes (CSP) model, where anonymous processes communicate over named channels, unlike the Actor model's named processes with inboxes.
#4about 8 minutes
Common patterns for concurrent architectures
Concurrency enables powerful design patterns like service providers, resource managers, supervisors for fault tolerance, and ETL data pipelines.
#5about 4 minutes
An overview of the Go programming language
Go is a pragmatic, multi-paradigm language designed by pioneers like Ken Thompson and Rob Pike, featuring implicit interfaces and first-class functions.
#6about 8 minutes
Go's core concurrency primitives: goroutines and channels
Lightweight concurrent functions called goroutines are launched with the `go` keyword and communicate or synchronize over typed channels.
#7about 3 minutes
Waiting for goroutines with sync.WaitGroup
The `sync.WaitGroup` type provides a simple and effective mechanism to block the main goroutine until a collection of background jobs has completed.
#8about 6 minutes
Streaming and piping data with channels
Channels can be used to stream data between goroutines, and closing a channel signals the end of the stream to a ranging receiver.
#9about 5 minutes
Building a concurrent service with multiple channels
A common but verbose approach to building a concurrent service involves creating separate channels for each type of operation, leading to complex state management.
#10about 5 minutes
A simpler actor-like pattern using a function channel
A more elegant service pattern uses a single channel to send functions, which are then executed sequentially by the background goroutine, simplifying the API and centralizing logic.
Related jobs
Jobs that call for the skills explored in this talk.
Matching moments
04:35 MIN
Concurrency support from memory models to coroutines
The Design and Evolution of C++
03:26 MIN
Simplifying concurrency with structured coroutines
Moving from Java to Kotlin
03:52 MIN
Defining concurrency, parallelism, and multitasking
Concurrency in Python
07:14 MIN
Q&A on concurrency models and developer tools
Devouring APIs with Python
05:31 MIN
Why Go is a great choice for AI-generated code
MLOps and AI Driven Development
02:05 MIN
Understanding the goals of Java's Project Loom
Java's Project Loom & Co - the end for reactive programming?
02:22 MIN
Moving from C# to modern languages like Go
Coffee with developers - Brian Morrison
08:58 MIN
Addressing the technical challenge of concurrency in virtual events
The Concept of Concurrency & Multithreading: What Are They And How They FunctionAs the world around us moves ever more online, the need for software engineers is growing - seemingly by the hour. Whether by building firewalls that fend off the next big data breach, or developing the next app that goes viral, we have a seemingly i...
Gerry Schneider
I have a stream! Why it’s definitely worth speaking at tech conferences.Giving talks at certain events is a longed-for goal for many developers. For a good reason: it is the perfect opportunity to share your expertise and passion for a specific topic, help others learn from your mistakes, drive awareness of your solution...
Anto Pranjić
5 Reasons Why Attending Conferences Matters More Than You ThinkIt only took us a global pandemic to realize that most of our daily work can be done from home. It’s kind of funny, but things that weren’t meant to be done from home in the past such as attending meetings, managing teams, and even attending events a...
Chris Heilmann
All the videos of Halfstack London 2024!Last month was Halfstack London, a conference about the web, JavaScript and half a dozen other things. We were there to deliver a talk, but also to record all the sessions and we're happy to share them with you. It took a bit as we had to wait for th...
From learning to earning
Jobs that call for the skills explored in this talk.