In the previous story, we reviewed a basic sample of asynchronous execution. You probably already know the two common problems with concurrency, shared mutable state and dead-locks. These problems are common in both languages and they have similar resolutions. Let’s take a look at them. We will start with Shared…