Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Hands-on Concurrency with Go
Rating: 4.3 out of 5(54 ratings)
269 students

Hands-on Concurrency with Go

Build better software faster with concurrency in Go
Last updated 8/2018
English

What you'll learn

  • Theory of concurrency and parallelism
  • How to use Goroutines to implement concurrent systems
  • The Go memory sharing model with channels
  • The importance of I/O concurrent design for high-performance software
  • How to improve performance by recognizing and exploiting inherent data parallelism
  • Techniques for improving your software’s architecture with the “gopher” model
  • Best practices for building concurrent systems in Go

Course content

6 sections35 lectures2h 32m total length
  • The Course Overview1:08

    This video will give you an overview about the course.

  • The World of Concurrent Software2:51

    In this video, we will get a brief introduction to concurrency and parallelism.

       •  Discuss what sequential programming is and its problems

       •  Learn how concurrency can be used as a solution

       •  Learn about parallelism and how it is useful

  • Scalability – Why Does My Website Keep Crashing?1:45

    In this video, we will learn how concurrency improves scalability.

       •  Discuss sequential scaling problems

       •  Learn how things can be improved using Concurrency

  • Performance — Getting the Most out of Your CPU1:10

    In this video, we examine the performance benefits of concurrency.

       •  Discuss CPU underutilization and latency issues

       •  Learn how concurrency enables parallelism and more efficient CPU utilization

  • Reliability — What Do You Mean, us-east-1 Is Down?1:36

    In this video, we look at the reliability implications of concurrency.

       •  Discuss error handling and retrying in sequential programs

       •  Learn how concurrent architecture can be easily integrated with error handling

  • Maintainability1:30

    In this video, we examine how concurrent Go code can be maintained easily.

       •  Discuss how code becomes unmaintainable

       •  Learn how concurrent architecture and Go enable maintainable software

Requirements

  • We assume that they are acquainted with coding with Go We assume that they’re well-versed with Golang basics as we won’t be covering any programming basics in the course if you want to code for anything but the smallest, weakest systems with Go, this course is for you.

Description

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.   

About the Author

Leo Tindall is a software developer and hacker from San Diego whose interests include scalability, parallel software, and machine learning.

Who this course is for:

  • This course is for developers who want to get to grips with concurrency techniques with Go.