12.1 Concurrent Programming with Processes

12.2 Concurrent Programming with I/O Multiplexing

12.3 Concurrent Programming with Threads

12.4 Shared Variables in Threaded Programs

12.5 Synchronizing Threads with Semaphores

12.6 Using Threads for Parallelism

12.7 Other Concurrency Issues