Understanding concurrency issues
In software applications, concurrency is the ability of an application to execute multiple processes simultaneously. While executing simultaneously, these processes can use shared resources and could potentially end up with data corruption or the wrong data.
We will try to understand concurrency issues using a real-life example of driving a car on a road. The following figure shows a two-lane driving road:
In the preceding figure, a car represents a process and a driving lane represents a shared resource. Driving on a straight road (without using a shared resource) is not a complex task. Complexities will arise when a driver of the car (a process) tries to change lanes (access a shared resource) and make sure that there is no chance of an accident (data loss or corruption). So, here we are trying to state that if a car (a process) runs on its own lane (not a shared resource), the possibility of data corruption is very low.
The following figure shows...