Working with Concurrency in Go (Golang)
Working with Concurrency in Go (Golang), available at $89.99, has an average rating of 4.53, with 86 lectures, based on 1186 reviews, and has 10961 subscribers.
You will learn about 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 This course is ideal for individuals who are Go programmers who want to understand how Go works with concurrent programming It is particularly useful for Go programmers who want to understand how Go works with concurrent programming.
Enroll now: Working with Concurrency in Go (Golang)
Summary
Title: Working with Concurrency in Go (Golang)
Price: $89.99
Average Rating: 4.53
Number of Lectures: 86
Number of Published Lectures: 86
Number of Curriculum Items: 86
Number of Published Curriculum Objects: 86
Original Price: $29.99
Quality Status: approved
Status: Live
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
Who Should Attend
- Go programmers who want to understand how Go works with concurrent programming
Target Audiences
- Go programmers who want to understand how Go works with concurrent programming
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.
Course Curriculum
Chapter 1: Introduction
Lecture 1: Introduction
Lecture 2: A bit about me
Lecture 3: Installing Go
Lecture 4: Installing Visual Studio Code
Lecture 5: Installing Make
Lecture 6: Asking for help
Lecture 7: Mistakes: we all make them.
Chapter 2: Goroutines, the go keyword, and WaitGroups
Lecture 1: What we'll cover in this section
Lecture 2: Creating GoRoutines and identifying a problem
Lecture 3: WaitGroups to the rescue
Lecture 4: Writing tests with WaitGroups
Lecture 5: Challenge: working with WaitGroup
Lecture 6: Solution to Challenge
Chapter 3: Race Conditions, Mutexes, and an Introduction to Channels
Lecture 1: What we'll cover in this section
Lecture 2: Race Conditions: an example
Lecture 3: Adding sync.Mutex to our code
Lecture 4: Testing for race conditions
Lecture 5: A more complex example
Lecture 6: Writing a test for our weekly income project
Lecture 7: Producer/Consumer – Using Channels for the first time
Lecture 8: Getting started with the Producer – the pizzeria function
Lecture 9: Making a pizza: the makePizza function
Lecture 10: Finishing up the Producer code
Lecture 11: Creating and running the consumer: ordering a pizza
Lecture 12: Finishing up our Producer/Consumer project
Chapter 4: A Classic Problem: The Dining Philosophers
Lecture 1: What we'll cover in this section
Lecture 2: Getting started with the problem
Lecture 3: Implementing the diningProblem logic
Lecture 4: Challenge: Printing out the order in which the meal is finished
Lecture 5: Solution to challenge
Lecture 6: Writing a test for our program
Chapter 5: Channels, and another classic: The Sleeping Barber problem
Lecture 1: What we'll cover in this section
Lecture 2: Introduction to channels
Lecture 3: The select statement
Lecture 4: Buffered Channels
Lecture 5: Getting started with the Sleeping Barber project
Lecture 6: Defining some variables, the barber shop, and getting started with the code
Lecture 7: Adding a Barber
Lecture 8: Starting the barbershop as a GoRoutine
Lecture 9: Sending clients to the shop
Lecture 10: Trying things out
Chapter 6: Final Project – Building a Subscription Service
Lecture 1: What we'll cover in this section
Lecture 2: Setting up a simple web application
Lecture 3: Setting up our Docker development environment
Lecture 4: Adding postgres
Lecture 5: Setting up a Makefile
Lecture 6: Adding sessions & Redis
Lecture 7: Setting up the application config
Lecture 8: Setting up a route & handler for the home page, and starting the web server
Lecture 9: Setting up templates and building a render function
Lecture 10: Adding session middleware
Lecture 11: Setting up additional stub handlers and routes
Lecture 12: Implementing graceful shutdown
Lecture 13: Populating the database
Lecture 14: Adding a data package and database models
Lecture 15: Implementing the login/logout functions
Chapter 7: Sending Email Concurrently
Lecture 1: What we'll cover in this section
Lecture 2: Getting started with the mailer code
Lecture 3: Building HTML and Plain Text messages
Lecture 4: Sending a message (synchronously)
Lecture 5: Getting started sending a message (asynchronously)
Lecture 6: Writing a helper function to send email easily
Lecture 7: Sending an email on incorrect login
Lecture 8: Adding cleanup tasks to the shutdown() function
Chapter 8: Registering a User and Displaying Plans
Lecture 1: What we'll cover in this section
Lecture 2: Adding mail templates and URL signer code
Lecture 3: Starting on the handler to create a user
Lecture 4: Activating a user
Lecture 5: Giving user data to our templates
Lecture 6: Displaying the Subscription Plans page
Lecture 7: Adding a route and trying things out for the "Plans" page
Lecture 8: Writing a stub handler for choosing a plan
Chapter 9: Adding Concurrency to Choosing a Plan
Lecture 1: What we'll cover in this section
Lecture 2: Getting the plan id, the plan, and the user
Lecture 3: Generating an Invoice
Lecture 4: Generating a manual
Lecture 5: Trying things out, subscribing a user, updating the session, and redirecting
Chapter 10: Testing
Lecture 1: What we'll cover in this section
Lecture 2: Setting up our tests
Lecture 3: Testing Routes
Lecture 4: Testing the Renderer
Lecture 5: Modifying the data package to make it testable
Lecture 6: Implementing the PlanTest type
Lecture 7: Getting started testing Handlers
Lecture 8: Testing the Login Handler
Lecture 9: Testing a handler that uses concurrency
Instructors
-
Trevor Sawler
Ph.D.
Rating Distribution
- 1 stars: 11 votes
- 2 stars: 21 votes
- 3 stars: 72 votes
- 4 stars: 308 votes
- 5 stars: 774 votes
Frequently Asked Questions
How long do I have access to the course materials?
You can view and review the lecture materials indefinitely, like an on-demand channel.
Can I take my courses with me wherever I go?
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don’t have an internet connection, some instructors also let their students download course lectures. That’s up to the instructor though, so make sure you get on their good side!
You may also like
- Top 10 Video Editing Courses to Learn in November 2024
- Top 10 Music Production Courses to Learn in November 2024
- Top 10 Animation Courses to Learn in November 2024
- Top 10 Digital Illustration Courses to Learn in November 2024
- Top 10 Renewable Energy Courses to Learn in November 2024
- Top 10 Sustainable Living Courses to Learn in November 2024
- Top 10 Ethical AI Courses to Learn in November 2024
- Top 10 Cybersecurity Fundamentals Courses to Learn in November 2024
- Top 10 Smart Home Technology Courses to Learn in November 2024
- Top 10 Holistic Health Courses to Learn in November 2024
- Top 10 Nutrition And Diet Planning Courses to Learn in November 2024
- Top 10 Yoga Instruction Courses to Learn in November 2024
- Top 10 Stress Management Courses to Learn in November 2024
- Top 10 Mindfulness Meditation Courses to Learn in November 2024
- Top 10 Life Coaching Courses to Learn in November 2024
- Top 10 Career Development Courses to Learn in November 2024
- Top 10 Relationship Building Courses to Learn in November 2024
- Top 10 Parenting Skills Courses to Learn in November 2024
- Top 10 Home Improvement Courses to Learn in November 2024
- Top 10 Gardening Courses to Learn in November 2024