Books & Videos

Table of Contents

Chapter: Introduction

Overview Of Concurrency, Parallelism, And Non-Blocking I-O

07m 4s

About The Author

01m 38s

Technical Definitions Of Concurrency And Parallelism

04m 5s

Why Examples In Various Programming Languages?

04m 47s

The Big Picture - Apps, System Libraries, And Kernel Routines

06m 16s

Getting Started

04m 46s

How To Access Your Working Files

01m 15s

Chapter: Concurrency And Parallelism

Processes And Threads

06m 54s

Multiprocessing

06m 13s

Multithreading

05m 10s

Non-Blocking I-O

06m 13s

Chapter Review

05m 52s

Hybrid Approaches - The Rule, Not The Exception

08m 14s

Chapter: Multiprocessing Basics

Overview Of The First Multiprocessing Example - Unnamed Pipes In C

07m 15s

Source Code For The First Multiprocessing Example

07m 57s

Overview Of The Second Multiprocessing Example - Named Pipes In C

04m 25s

Source Code For The Second Multiprocessing Example

04m 32s

Multiprocessing The Nginx Web Server

08m 10s

Overview Of Execing And Forking Options In Multiprocessing

05m 13s

Source Code For The Execing Multiprocessing Example

04m 45s

Process Tracking And Management

08m 22s

Chapter: Multiprocessing Through Richer Code Examples

Multiprocessing In Node JS

06m 2s

Interprocess Communication Mechanisms - IPC

06m 54s

Overview Of The Shared-Memory IPC Example

06m 1s

Source Code For The Shared-Memory IPC Example

05m 57s

The Nginx Web Server And Unicorn App Server Architecture

07m 3s

Overview Of The Three Sample Web Servers

04m 11s

The Multiprocessing Web Server

07m 46s

Exercise - Which Process Prints What And Why?

04m 47s

Upsides And Downsides Of Multiprocessing

05m 39s

Chapter: Multithreading Basics

Overview Of Multithreading

04m 49s

A Sample Race Condition In Java

06m 51s

Analysis Of The Race Condition Code

06m 1s

Overview Of Explicit Thread Locking

08m 2s

A Sample Deadlock In Java

07m 16s

High-Level Concurrency Management In Multithreading

05m 28s

Wrap Up Of Multithreading Basics

05m 25s

Exercise - Timing The Cost Of Explicit Locking

03m 51s

Chapter: Multithreading Through Richer Code Examples

The Miser-Spendthrift Problem In C

09m 21s

Fixing The Miser-Spendthrift Problem In C

05m 59s

Overview Of The Miser-Spendthrift Problem In Java

04m 57s

Miser-Spendthrift Examples In Java

06m 55s

Thread Synchronization As Cooperation

06m 47s

The Thread-Safe Stack Example In Java

08m 49s

The Multithreading Web Server

07m 29s

Chapter Review

06m 2s

Exercise - Thread Pools And Thread Cooperation

06m 32s

Race Condition Exercise

01m 27s

Chapter: Thread-Safety And High-Level Concurrent Types In Java

Thread Safety Through High-Level Thread-Safe Data Types

07m 55s

Overview Of The BlockingQueue Example In Java

05m 16s

The BlockingQueue Example - The Java Code

05m 9s

Overview Of The Semaphores Example

05m 44s

The Semaphore-Executor Code Example In Java

08m 42s

Overview Of The Fork-Join Framework In Java

06m 57s

The Filesearcher Example In Java

06m 15s

Futures And Callables In Java - A Code Example

06m 2s

Thread Safety Through Immutable Types And Pure Functions

07m 53s

Chapter Review

07m 8s

Exercise - A Producer-Consumer Program With Thread-Safe Channels

04m 37s

Chapter: Options For Thread Synchronization And Cooperation

Locking Memory Versus Thread-Safe Channels And Memory Owners

05m 19s

Overview Of Goroutines And Channels

05m 37s

Explicit Locking In Go - The Miser-Spendthrift Problem Redux

06m 26s

Thread-Pooling And Thread-Safe Channels In Go - The Miser-Spendthrift Problem Yet Again

09m 5s

Chapter Review

08m 12s

Chapter: Concurrency And Non-Blocking I-O

What Exactly Is Non-Blocking I-O?

07m 15s

Non-Blocking I-O As A Concurrency Mechanism

06m 2s

Overview Of The Epoller Example In C

05m 8s

The Epoller Code Modules In C

08m 29s

Overview Of The Non-Blocking I-O Example In Java

05m 9s

The Non-Blocking Server Code - Java

08m 29s

The Non-Blocking Client Code - Java

07m 13s

Overview Of The Polling Server Web Server

06m 30s

The Code For The Polling Server

06m 38s

Exercise - Polling Multiple Data Sources Using Non-Blocking I-O

04m 30s

Chapter: Parallelism Basics

Overview Of Parallelism Beyond Concurrency

05m 58s

Flynn Taxonomy As A Starting Point

04m 45s

A SIMD Auto Vectorization Code Example In C

05m 47s

The Parallel Instructions Of The SIMD Example In The Assembly Code

08m 21s

Timing The Performance Boost From Parallelism - A Code Example

04m 57s

Overview Of The OpenMP Framework For Auto Vectorization

04m 43s

OpenMP Basics In A Code Example

04m 36s

The Miser-Spendthrift Problem In OpenMP

05m 7s

SIMD Programming In OpenMP

07m 47s

Wrap Up On Data Parallelism - SIMD Basics

04m 53s

Chapter: Parallelism And Performance

How Can Performance Gains Through Parallelism Be Measured?

06m 3s

The ParallelSort Program In Java

04m 12s

Amdahls Law By Example

07m 37s

Exercise - Use Timings To Get Data On Performance Trends

03m 2s

Chapter: Parallelism And Distributed Computing

Distributed Systems And Parallelism Overview

04m 33s

Map-Reduce Overview

04m 11s

Java 8 Support For Map-Reduce Operations

07m 31s

Map-Reduce Code Example - The Book Index Program In Java

07m 21s

OpenMPI Overview

04m 48s

OpenMPI Example - MPI Basics

05m 21s

OpenMPI Example - MPI Message Passing

07m 31s

Wrap Up Of Distributed Systems And Parallelism

05m 34s

Exercise - Code An OpenMPI Solution To The Book Index Map-Reduce Problem

03m 15s

Chapter: Conclusion

Course Wrap Up

04m 25s