Throughout the previous chapter, we have seen that a modifiable shared state can cause issues when some concurrent tasks are able to change the shared state's value. Exploring this further we might ask, what kind of issues may occur? What is the main reason behind them? We will answer these questions within this section.
First of all, we need to distinguish the different types of concurrency issues that might occur. Some concurrency issues only exist when no concurrency control mechanism is in place, and some are introduced by using a concurrency control technique.
Regarding the issues in the first group, they happen when you can see that different interleavings result in different overall states. Upon identifying one of these issues, the next step of course will be to begin thinking about a suitable fix to resolve said issue.
Regarding the second group, they only arise following a fix being put in place. This means that when you fix a concurrency issue...