O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Hands-on Concurrency with Go

Video Description

Build better software faster with concurrency in Go

About This Video

  • Understand Go’s concurrency features and their tradeoffs
  • Identify the types of concurrent problems and how to tackle them most effectively
  • Apply the Go language to solve programming problems

In Detail

This course presents you a hands-on look at creating concurrent and parallel programs using the Go programming language. From a blazing-fast garbage-collected memory model to effortless, lightweight Goroutines to speedy communication using in-memory channels, Go makes powerful concurrency primitives available which are unparalleled in other languages. This course provides you with both the theoretical and practical knowledge you will need to apply them to your own software.

This course covers the basics of concurrency and parallelism in Go, along with in-depth looks at the three types of concurrent and parallel program models and an introduction to concurrent architecture. This course will show you the multitude of tools available in Go for implementing concurrent systems, including goroutines, blocking channels, buffered channels, and non-blocking in-memory communication.You will build multiple concurrent applications and examine the benefits and drawbacks of the various concurrency options available.

By the end of the course, you will be able to rapidly and confidently identify concurrent and parallel problems and apply the Go language concurrency constructs to solve them.

The code bundle for this video course is available at: https://github.com/PacktPublishing/Hands-on-Concurrency-with-Go-video

Table of Contents

  1. Chapter 1 : What are Concurrency and Parallelism?
    1. The Course Overview 00:01:09
    2. The World of Concurrent Software 00:02:51
    3. Scalability – Why Does My Website Keep Crashing? 00:01:46
    4. Performance — Getting the Most out of Your CPU 00:01:11
    5. Maintainability 00:01:36
  2. Chapter 2 : Goroutines, Channels, and Concurrency in Go
    1. Go Programming Review 00:04:24
    2. Goroutines 00:03:40
    3. Communicating by Sharing Memory 00:06:31
    4. Sharing Memory by Communicating with Channels 00:06:51
    5. Queuing Work with Buffered Channels 00:07:27
    6. Non-Blocking Channel Operations 00:08:43
    7. Concurrency is Cheap 00:01:11
  3. Chapter 3 : Data Parallelism
    1. What is Data Parellism 00:01:25
    2. The Barycenter Problem 00:02:02
    3. A Naive Barycenter Implementation 00:19:27
    4. A Parallel Barycenter Implementation 00:12:04
    5. Performance Comparison 00:01:29
  4. Chapter 4 : I/O Concurrency
    1. What is I/O Concurrency? 00:01:36
    2. A Reddit and HackerNews Client 00:13:18
    3. I/O Concurrent Design 00:01:34
    4. Putting it All Together 00:10:44
    5. Testing 00:01:10
  5. Chapter 5 : Task Parallelism
    1. What is Task Parallelism? 00:02:03
    2. A Cautionary Tale 00:02:02
    3. A Reddit and HackerNews Search Engine 00:01:08
    4. Building a Web Service in Go 00:17:27
    5. Incorporating the Reddit and HackerNews Client 00:06:14
    6. Advantages and Disadvantages of Task-Parallel Design 00:01:16
  6. Chapter 6 : Concurrent Architecture
    1. What is Concurrent Architecture? 00:01:23
    2. Data Parallelism in Concurrent Architecture 00:01:21
    3. I/O Concurrency in Concurrent Architecture 00:01:33
    4. Task Parallelism in Concurrent Architecture 00:01:43
    5. Advantages and Disadvantages of Concurrent Architecture 00:01:08
    6. Applying Concurrent Design in Projects Large and Small 00:02:06