Working with Concurrency in Go (Golang)

Learn the advantages and pitfalls of concurrent programming with the Go programming language

4.53 (1042 reviews)
Udemy
platform
English
language
Programming Languages
category
instructor
Working with Concurrency in Go (Golang)
9,703
students
9.5 hours
content
Sep 2022
last update
$89.99
regular price

What you will learn

Learn about the various ways Go makes working with concurrent programing simple

Understand how concurrency works, and its advantages and pitfalls

Learn how WaitGroups, Mutexes, and channels work

Master concurrency by working with classic computer science problems, and by building a real-world example

Why take this course?

Go, often referred to as Golang, is well-known for making it remarkably easy to work with concurrency. In order to make a particular function run concurrently, all we have to do is prepend the word "go" to the function call, and it cheerfully runs in the background, as a GoRoutine. Go's built in scheduler takes are of making sure that a given GoRoutine runs when it should, and as efficiently as it can.

However, this does not mean that working with concurrency is simple in Go—thread safe programming takes careful planning, and most importantly it requires that developers have an absolutely solid understanding of how Go deals with concurrency.

In the standard library, Go offers us several ways of dealing with concurrently running parts of our program, right in the standard library: sync.WaitGroup, which lets us wait for tasks to finish; sync.Mutex, which allows us to lock and unlock resources, so that no two GoRoutines can access the same memory location at the same time; and finally, Channels, which allow GoRoutines to send and receive data to and from each other.

Go's approach to concurrency is fairly straightforward, and is more or less summed up this mantra: Don't communicate by sharing memory; instead, share memory by communicating. Channels are the means by which we usually share memory by communicating.

In this course, we'll cover the use of WaitGroups, Mutexes, and Channels, and we'll do so in detail. We'll also cover some of the problems inherent in concurrency, including early program termination and race conditions. Initially, we'll gain a good understanding of how these things work by solving some of the classic problems found in the field of computer science, including the Dining Philosophers, the Producer/Consumer problem, and the Sleeping Barber. These problems are classics for a reason: they force a developer to figure out the best approach to working with code that run concurrently, or in parallel.

Finally, we'll finish the course out with a more "real-world" problem, where we have to register a customer for some kind of subscription service, and take care of invoicing, registration, and all the things necessary to get a new customer up and running. We'll do so, naturally, as quickly as we can by dividing the necessary tasks up into smaller tasks, and having them run concurrently.

Reviews

Кирилл
October 4, 2023
need to ai to translate some words. Also need to add information about atomic in Go. and need to update videos in the feature
Muzamil
September 17, 2023
Trevor explained everything in detail. This course also has hands on practice of GoRoutines. Just 1 suggestion.. This course can be improved more by decreasing the non-concurrency related code. I know we've to write and understand such code before running any related concurrency, but this can be improved.
Trần
August 28, 2023
The instructor has good knowledge but his coding style is not really good. There is a lot of things to be desired here. For example, in one of the lecture he created a `chan chan error` but failed to explain the need for it instead of just a simple `chan struct{}`. In the end, he just used the channel as if it was a `chan struct{}` (the idiomatic way for a quit channel).
Pedro
August 1, 2023
Excellent course. Superb teaching. Great explanations, good pace, great review of computer science's Dining Philosophers.
Marcelo
June 30, 2023
I think it was a nice class. It wasn't clear for me the solutions for the Dining Philosophers or the Sleeping barber problem, but overall I think it's very productive and cover the basic of concurrency
Junior
May 17, 2023
Só tenho a agradecer ao professor, super didático e explica bem. tem bastante conhecimento e domínio no assunto.
Roman
April 25, 2023
everything was super comprehensive and I'm glad about passing the course! one thing I wanted to mention: it'd be even better to make a wider focus on concurrency during mastering the final project (sections 6-9). thanks a lot Trevor!
Vaibhav
April 20, 2023
It was a good experience to learn about go routines and other concurrency features of the Golang, but the one problem I had was it was quite challenging for me to wrap my head around the mutex concepts. The instructor almost assumes that everybody knows how they work and moves on. But the rest of the concepts were clearly explained. I can confidently use wait groups and go routines in my workplace, but I'm afraid I can't say the same about mutexes.
Vardhaman
March 26, 2023
the things which are covered in the course are explained well. "Unidirectional channels" topic needs to be added in the content.
Prabhu
March 21, 2023
total learning is good but i feel that the explanation could be better. mostly it is running through the code and explaining what could be done than the significance and how the concurrency can be handled better.
國生
March 20, 2023
The barbar and dining cases explain wonderfully, but it seems that you like to complicate things. 2023/04/06 just stay tune to concurrency~~~ you talk too much!! mix so many things!
Ashish
March 20, 2023
Concepts were clear but examples can be improved. For eg: The whole pizzeria example was very confusing and I began to lose interest
Amit
March 14, 2023
There should be a summary at the end of the course to revise what we learnt. Since we are coding along with course, there is no time to make notes. So summary document at the end would be really helpful to revise all the major learnings.
Erik
January 18, 2023
Trevor introduces all involved concepts well, but the "project" part of the course deteriorates into somewhat frantic jumping between files, functions, and concepts which is at times hard to follow. Especially when resolving issues this turns into a problem, the fact that they are shown is great, but a more methodical <presentation> -> <cause> -> <resolution> might be helpful. Another way to improve the project section could be to show some sort of interaction or architectural diagram. Besides that I'm quite happy with the course.
Carlos
December 7, 2022
Tuve problemas para ver la mayor cantidad del contenido del video. Como curso, excelente pero si udemy no me deja ver el contenido de lo videos no puedo hacer mucho. Descargué el material y estudié solo. gracias

Charts

Price

Working with Concurrency in Go (Golang) - Price chart

Rating

Working with Concurrency in Go (Golang) - Ratings chart

Enrollment distribution

Working with Concurrency in Go (Golang) - Distribution chart
4665696
udemy ID
4/29/2022
course created date
7/17/2022
course indexed date
Bot
course submited by