In this chapter, we studied the theoretical differences between lock-based and mutex-free data structures: a lock-based data structure uses a locking mechanism to protect the integrity of its data, while a mutex-free one does not. We analyzed the problem of race conditions that can occur in poorly-designed data structures, and looked at how to address it in both situations.
In our example of the concurrent lock-based counter data structure, we considered the design of approximate counters, as well as the improved scalability that the design can offer. In our analysis of the concurrent network data structure, we studied the RCU technique, which isolates reading instructions from updating instructions, with the goal of maintaining the integrity of the concurrent data structure.
In the next chapter, we will look at another set of advanced concepts in Python concurrent programming...