O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Concurrent and Parallel Programming Concepts

Video Description

In this Concurrent and Parallel Programming Concepts training course, expert author Martin Kalin will teach you everything you need to know to master concurrent and parallel programming. This course is designed for users that already a basic working knowledge of programming concepts.

You will start by learning about concurrency and parallelism, then jumping into learning the basics of multiprocessing. From there, Martin will teach you about multiprocessing through richer code examples, as well as multithreading through richer code examples. This video tutorial also covers thread-safety and high-level concurrent types in Java, options for thread synchronization and cooperation, and concurrency and non-blocking I/O. Finally, you will learn the basics of parallelism, parallelism and performance, and parallelism and distributed computing.

Once you have completed this computer based training course, you will have learned everything you need to know about concurrent and parallel programming. Working files are included, allowing you to follow along with the author throughout the lessons.

Table of Contents

  1. Introduction
    1. Overview Of Concurrency, Parallelism, And Non-Blocking I-O 00:07:05
    2. About The Author 00:01:39
    3. Technical Definitions Of Concurrency And Parallelism 00:04:05
    4. Why Examples In Various Programming Languages? 00:04:48
    5. The Big Picture - Apps, System Libraries, And Kernel Routines 00:06:16
    6. Getting Started 00:04:46
  2. Concurrency And Parallelism
    1. Processes And Threads 00:06:54
    2. Multiprocessing 00:06:14
    3. Multithreading 00:05:10
    4. Non-Blocking I-O 00:06:13
    5. Chapter Review 00:05:53
    6. Hybrid Approaches - The Rule, Not The Exception 00:08:15
  3. Multiprocessing Basics
    1. Overview Of The First Multiprocessing Example - Unnamed Pipes In C 00:07:15
    2. Source Code For The First Multiprocessing Example 00:07:58
    3. Overview Of The Second Multiprocessing Example - Named Pipes In C 00:04:25
    4. Source Code For The Second Multiprocessing Example 00:04:33
    5. Multiprocessing The Nginx Web Server 00:08:10
    6. Overview Of Execing And Forking Options In Multiprocessing 00:05:13
    7. Source Code For The Execing Multiprocessing Example 00:04:46
    8. Process Tracking And Management 00:08:22
  4. Multiprocessing Through Richer Code Examples
    1. Multiprocessing In Node JS 00:06:03
    2. Interprocess Communication Mechanisms - IPC 00:06:54
    3. Overview Of The Shared-Memory IPC Example 00:06:01
    4. Source Code For The Shared-Memory IPC Example 00:05:57
    5. The Nginx Web Server And Unicorn App Server Architecture 00:07:03
    6. Overview Of The Three Sample Web Servers 00:04:11
    7. The Multiprocessing Web Server 00:07:47
    8. Exercise - Which Process Prints What And Why? 00:04:48
    9. Upsides And Downsides Of Multiprocessing 00:05:40
  5. Multithreading Basics
    1. Overview Of Multithreading 00:04:49
    2. A Sample Race Condition In Java 00:06:51
    3. Analysis Of The Race Condition Code 00:06:02
    4. Overview Of Explicit Thread Locking 00:08:02
    5. A Sample Deadlock In Java 00:07:16
    6. High-Level Concurrency Management In Multithreading 00:05:28
    7. Wrap Up Of Multithreading Basics 00:05:26
    8. Exercise - Timing The Cost Of Explicit Locking 00:03:51
  6. Multithreading Through Richer Code Examples
    1. The Miser-Spendthrift Problem In C 00:09:22
    2. Fixing The Miser-Spendthrift Problem In C 00:06:00
    3. Overview Of The Miser-Spendthrift Problem In Java 00:04:57
    4. Miser-Spendthrift Examples In Java 00:06:56
    5. Thread Synchronization As Cooperation 00:06:47
    6. The Thread-Safe Stack Example In Java 00:08:49
    7. The Multithreading Web Server 00:07:29
    8. Chapter Review 00:06:02
    9. Exercise - Thread Pools And Thread Cooperation 00:06:33
    10. Race Condition Exercise 00:01:28
  7. Thread-Safety And High-Level Concurrent Types In Java
    1. Thread Safety Through High-Level Thread-Safe Data Types 00:07:55
    2. Overview Of The BlockingQueue Example In Java 00:05:17
    3. The BlockingQueue Example - The Java Code 00:05:10
    4. Overview Of The Semaphores Example 00:05:44
    5. The Semaphore-Executor Code Example In Java 00:08:43
    6. Overview Of The Fork-Join Framework In Java 00:06:58
    7. The Filesearcher Example In Java 00:06:16
    8. Futures And Callables In Java - A Code Example 00:06:03
    9. Thread Safety Through Immutable Types And Pure Functions 00:07:53
    10. Chapter Review 00:07:09
    11. Exercise - A Producer-Consumer Program With Thread-Safe Channels 00:04:38
  8. Options For Thread Synchronization And Cooperation
    1. Locking Memory Versus Thread-Safe Channels And Memory Owners 00:05:19
    2. Overview Of Goroutines And Channels 00:05:38
    3. Explicit Locking In Go - The Miser-Spendthrift Problem Redux 00:06:27
    4. Thread-Pooling And Thread-Safe Channels In Go - The Miser-Spendthrift Problem Yet Again 00:09:05
    5. Chapter Review 00:08:13
  9. Concurrency And Non-Blocking I-O
    1. What Exactly Is Non-Blocking I-O? 00:07:15
    2. Non-Blocking I-O As A Concurrency Mechanism 00:06:02
    3. Overview Of The Epoller Example In C 00:05:08
    4. The Epoller Code Modules In C 00:08:29
    5. Overview Of The Non-Blocking I-O Example In Java 00:05:09
    6. The Non-Blocking Server Code - Java 00:08:30
    7. The Non-Blocking Client Code - Java 00:07:14
    8. Overview Of The Polling Server Web Server 00:06:30
    9. The Code For The Polling Server 00:06:38
    10. Exercise - Polling Multiple Data Sources Using Non-Blocking I-O 00:04:31
  10. Parallelism Basics
    1. Overview Of Parallelism Beyond Concurrency 00:05:58
    2. Flynn Taxonomy As A Starting Point 00:04:45
    3. A SIMD Auto Vectorization Code Example In C 00:05:47
    4. The Parallel Instructions Of The SIMD Example In The Assembly Code 00:08:22
    5. Timing The Performance Boost From Parallelism - A Code Example 00:04:58
    6. Overview Of The OpenMP Framework For Auto Vectorization 00:04:43
    7. OpenMP Basics In A Code Example 00:04:37
    8. The Miser-Spendthrift Problem In OpenMP 00:05:07
    9. SIMD Programming In OpenMP 00:07:48
    10. Wrap Up On Data Parallelism - SIMD Basics 00:04:53
  11. Parallelism And Performance
    1. How Can Performance Gains Through Parallelism Be Measured? 00:06:04
    2. The ParallelSort Program In Java 00:04:12
    3. Amdahls Law By Example 00:07:37
    4. Exercise - Use Timings To Get Data On Performance Trends 00:03:03
  12. Parallelism And Distributed Computing
    1. Distributed Systems And Parallelism Overview 00:04:33
    2. Map-Reduce Overview 00:04:11
    3. Java 8 Support For Map-Reduce Operations 00:07:31
    4. Map-Reduce Code Example - The Book Index Program In Java 00:07:22
    5. OpenMPI Overview 00:04:49
    6. OpenMPI Example - MPI Basics 00:05:22
    7. OpenMPI Example - MPI Message Passing 00:07:31
    8. Wrap Up Of Distributed Systems And Parallelism 00:05:35
    9. Exercise - Code An OpenMPI Solution To The Book Index Map-Reduce Problem 00:03:15
  13. Conclusion
    1. Course Wrap Up 00:04:26