Concurrency
Over the course of the next two chapters we are going to talk about concurrency and the theoretical background that is required for developing concurrent programs, not only in C, but necessarily in other languages as well. As such, these two chapters won't contain any C code and instead use pseudo-code to represent concurrent systems and their intrinsic properties.
The topic of concurrency, due to its length, has been split into two chapters. In this chapter we will be looking at the basic concepts regarding concurrency itself, before moving to Chapter 14, Synchronization, where we will discuss concurrency-related issues and the synchronization mechanisms used in concurrent programs to resolve said issues. The collective end goal of these two chapters is to provide you with enough theoretical knowledge to proceed with the multithreading and multi-processing topics discussed in upcoming chapters.
The background knowledge we build in this chapter will also be...