4.8.0 introduction4.8.1 Parallelism in Python4.8.2 The Problem with Shared State4.8.3 When No Synchronization is Necessary4.8.4 Synchronized Data Structures4.8.5 Locks4.8.6 Barriers4.8.7 Message Passing4.8.8 Synchronization Pitfalls4.8.9 Conclusion