Concurrency – A High-Level Overview
For many who don’t work with concurrent programs (and for some who do), concurrency means the same thing as parallelism. In colloquial speech, people don’t usually distinguish between the two. But there are some clear reasons why computer scientists and software engineers make a big deal out of differentiating concurrency and parallelism. This chapter is about what concurrency is (and what it is not) and some of the foundational concepts of concurrency.
Specifically, we’ll cover the following main topics in this chapter:
- Concurrency and parallelism
- Shared memory versus message passing
- Atomicity, race, deadlocks, and starvation
By the end of this chapter, you will have a high-level understanding of concurrency and parallelism, basic concurrent programming models, and some of the fundamental concepts of concurrency.