Chapter 4. Composing Objects
So far, we’ve covered the low‐level basics of thread safety and synchronization. But we don’t want to have to analyze each memory access to ensure that our program is thread‐safe; we want to be able to take thread‐safe components and safely compose them into larger components or programs. This chapter covers patterns for structuring classes that can make it easier to make them thread‐safe and to maintain them without accidentally undermining their safety guarantees.So far, we’