The mood in the meeting on the 12th floor of an international investment bank was as bleak as it gets. The developers of the firm met to discuss the best way forward after a critical core application failed and caused a system wide outage.
“Guys, we have a serious issue here. I found out that the outage was caused by a race condition in our code, introduced a while ago and triggered last night.” says Mark Adams, senior developer.
The room goes silent. The cars outside the floor to ceiling windows slowly and silently creep along in the heavy city traffic. The senior developers immediately understand the severity of the situation, realizing that they will now be working around the clock to fix the issue and sort out the mess in the datastore. The less experienced developers understand that a race condition is serious but don’t know exactly what causes it and therefore keep their mouths shut.
Eventually Brian Holmes, delivery manager, breaks the silence with “The application has been running for months without any problems, we haven’t released any code recently, how is it possible that the software just broke down?!”
Everyone shakes their heads and goes back to their desk leaving Brian in the room alone, puzzled. He takes out his phone and googles “race condition”.
Sound familiar? How many times have you heard another developer talking about using threads and concurrent programming to solve a particular problem but out of fear you stayed out of the discussion?
Here’s the little secret that senior developers will never share… Multithreading programming is not much harder than normal programming. Developers are scared of concurrent programming because they think it is an advanced topic that only highly experienced developers get to play with.
This is far from the truth. Our minds are very much used to dealing with concurrency. In fact we do this in our everyday life without any problem but somehow we struggle to translate this into our code. One of the reasons for this is that we’re not familiar with the concepts and tools available to us to manage this concurrency. This course is here to help you understand how to use multithreading tools and concepts to manage your parallel programming. It is designed to be as practical as possible. We start with some theory around parallelism and then explain how the operating system handles multiple processes and threads. Later we move on to explain the multiple tools available by solving example problems using multithreading.
In this course we use Google’s Go programming language with its goroutines, however the concepts learned here can be applied to most programming languages.
All code in this course can be found on github, username/project: cutajarj/multithreadingingo Who this course is for:
Developers who want to take their career to the next level by improving their skills and learning about concurrent multithreading programming. College students currently learning about parallel computing who want to see how concepts learned in class relate to practice. Experienced developers that have recently started working with Go and want to discover the multithreading tools available. Delivery managers called Brian Holmes.
Requirements
Some experience of programming in Go (enough if you know how to use functions, loops, arrays and a bit of pointers). Recent version of Go installed. Being able to do 50 push-ups while shouting a unique prime number on each rep (just kidding).
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/1 - Introduction/01 - Understanding Parallel Computing.mp4
18.5 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/1 - Introduction/02 - More on Parallel Computing.mp4
135.5 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/10 - Spinning Locks/41 - Locking using Spinning locks.mp4
32.3 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/10 - Spinning Locks/42 - Building our own Spinning locks.mp4
11.4 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/10 - Spinning Locks/43 - Ledger Example.mp4
34.8 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/10 - Spinning Locks/44 - Implementing the Ledger Part 1.mp4
18.9 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/10 - Spinning Locks/45 - Implementing the Ledger Part 2.mp4
33.3 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/2 - Creating and using Threads/03 - Processes, Threads and Green threads.mp4
154 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/2 - Creating and using Threads/04 - Using Goroutines for Boids.mp4
32.3 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/2 - Creating and using Threads/05 - Groundwork for our simulation.mp4
29 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/2 - Creating and using Threads/06 - Starting our Goroutines.mp4
64.6 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/2 - Creating and using Threads/07 - Memory sharing between Threads.mp4
17.3 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/2 - Creating and using Threads/08 - Memory Sharing example Part 1.mp4
43.1 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/2 - Creating and using Threads/09 - Memory Sharing example Part 2.mp4
58.6 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/3 - Thread Synchronization with Mutexes/10 - Why do we need Locking.mp4
67.4 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/3 - Thread Synchronization with Mutexes/11 - Using Mutexes in Boid simulation.mp4
27.3 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/3 - Thread Synchronization with Mutexes/12 - Adding Synchronization to simulation.mp4
49 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/3 - Thread Synchronization with Mutexes/13 - Readers-Writer Locks.mp4
28 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/3 - Thread Synchronization with Mutexes/14 - Boid Synchronization with Readers-Writers Locks.mp4
82.6 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/4 - Waiting for Completed tasks/15 - Understanding WaitGroups.mp4
52.9 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/4 - Waiting for Completed tasks/16 - Concurrent file searching with WaitGroups.mp4
56.9 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/5 - Message passing with Channels/17 - Thread Communication using Channels.mp4
78.7 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/5 - Message passing with Channels/18 - Pipelining Example.mp4
133.3 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/5 - Message passing with Channels/19 - Understanding Thread Pools.mp4
19.7 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/5 - Message passing with Channels/20 - Thread Pool Example Part 1.mp4
68.5 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/5 - Message passing with Channels/21 - Thread Pool Example Part 2.mp4
35.4 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/6 - Synchronization using Condition Variables/22 - What's a Condition Variable.mp4
45.3 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/6 - Synchronization using Condition Variables/23 - Parallel Algorithm for Matrix Multiplication.mp4
27.9 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/6 - Synchronization using Condition Variables/24 - Implementing Parallel Matrix Multiplication Part 1.mp4
56.3 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/6 - Synchronization using Condition Variables/25 - Implementing Parallel Matrix Multiplication Part 2.mp4
26 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/7 - Deadlocks/26 - Deadlocking Robots, Philosophers and Trains.mp4
43.9 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/7 - Deadlocks/27 - Simple Deadlock Example.mp4
12.4 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/7 - Deadlocks/28 - Train Deadlock Example Part 1.mp4
10.4 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/7 - Deadlocks/29 - Train Deadlock Example Part 2.mp4
62 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/7 - Deadlocks/30 - Solving Deadlocks using Resource Hierarchy.mp4
27.6 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/7 - Deadlocks/31 - Implementing Resource Hierarchy Solution.mp4
57.3 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/7 - Deadlocks/32 - Solving Deadlocks using an Arbitrator.mp4
66.1 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/7 - Deadlocks/33 - Implementing Arbitrator Solution.mp4
32.1 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/8 - Barriers/34 - Barriers Explained.mp4
35 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/8 - Barriers/35 - Building a Barrier.mp4
21.6 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/8 - Barriers/36 - Barriers with Matrix Multiplication.mp4
38.4 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/9 - Atomic Variables/37 - Understanding Atomic Variables.mp4
114.4 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/9 - Atomic Variables/38 - Atomic Variables Example.mp4
8.3 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/9 - Atomic Variables/39 - Building a Letter Frequency Program.mp4
48.5 MB
[TutsNode.com] - Mastering Multithreading Programming with Go (Golang)/9 - Atomic Variables/40 - Using Atomic Variables in our Example.mp4
26.2 MB
Alternative Torrents for 'Mastering Multithreading Programming with Go Golang'.