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