Go Concurrency Deep Dive

Go Concurrency Deep Dive

English | MP4 | AVC 1920×1080 | AAC 44KHz 2ch | 19 Lessons (1h 35m) | 389 MB

Give your apps a speed boost and delight your users

Achieve the next level of developing high-performance applications
A purely sequential app has two downsides.

  • If the app maxes out the CPU, you need to switch to faster hardware.
  • If the app waits for I/O operations to finish, nothing else can be done during that time.

To make your app run faster and be more responsive, there is no way around thinking and programming in terms of concurrency.

Have you shied away from concurrent programming because you were afraid of having to tackle the added complexity?

Think twice.

Can you afford not writing concurrent code?
Single-threaded code is certainly easier to write and easier to troubleshoot. So why bother with all the pitfalls and unknowns of concurrent programming? Here is why: concurrent code enables your backend software to serve more clients, faster. Users love responsiveness and quick turnarounds. And you can provide them with that. If you know how to go beyond single-threaded programming.

Boost your Go code with concurrency
for highest performance and lowest latency
Go has concurrency built into the language, but concurrency itself is tricky by its very nature. Concurrent execution flows add a new dimension of complexity to programming.

Learn and practice concurrency in Go to achieve mastership in building concurrent applications.

What you’ll learn in this course

  • All about Go’s concurrency primitives: goroutines and channels
  • Useful concurrency patterns: do not re-invent the wheel
  • Troubleshooting concurrent code: what do do if things go wrong
Table of Contents

1 Welcome & How to Use This Course
2 Goroutines
3 Are Goroutines Threads?
4 CPU-Bound vs I/O-Bound Concurrency
5 How to not spawn goroutines in a loop
6 Channels
7 Channel Axioms
8 The Select Statement
9 Managing Goroutines
10 Error Handling 1: error channels
11 Error handling 2: result with error
12 Error handling 3: the errgroup package
13 The Context Package
14 Fan-Out, Fan-In, the easy way
15 Fan-Out, Fan-In, the universal way
16 Managing Resources With sync.Pool
17 Initialization with sync.Once
18 Data races
19 Goroutine Leaks