M4: Concurrent Data Structures

This fourth module provides an introduction to building higher-level concurrent objects. We will first start with learning about how we can build a concurrent linked list and then move on to other common data structures such as hash tables, queues and stacks.

Pre-recorded Lectures

Note: The pre-recorded videos for M4 will be posted after Wednesday’s lecture.

The pre-recorded lectures are available here: M4 Videos. You can also find the videos under the “Panopto” tab on the MPCS 52060 canvas site.

The lectures are a series of approx 20-30 minute videos divided into the following sections:

Week 4

  • 4.1 - Concurrent Objects and Concurrent Linked Lists Introduction

  • 4.2 - Coarse Grain Linked Lists

  • 4.3 - Fine Grain Synchronization

  • 4.4 - Optimistic Synchronization

Week 5

  • 4.5: Introduction to Concurrent Pools

  • 4.6: Bounded & Lock-Free Queue

  • 4.7: Lock-Free Stack

The slides/code presented in these videos are accessible in the upstream repository under the m4/resources directory. Please reachout to me if you do not have access to this repository.

Resources/Readings

  • The Art of Multiprocessor Programming readings:
    • Ch. 3.1, 3.2,3.4,3.5

    • Ch. 7.5, 7.6

    • Ch. 8.1, 8.2.1, 8.5

    • Ch. 9.1, 9.2, 9.3, 9.4

Synchronous Session (In-person Lecture)

As a reminder here are the dates and times for the synchronous session for this module:

Week 4

  • Dates/Times
    • Wednesday April 10th @ 5:30pm-7:20pm

  • Session Outline
    • Q&A on the pre-recorded lectures

    • Synchronization primitives: semaphores, and condition variables

    • Implementations of Concurrent Linked-Lists

Week 5

  • Dates/Times
    • Wednesday April 17th @ 5:30pm-7:20pm

  • Session Outline
    • Q&A on the pre-recorded lectures

    • Lock-free lists

    • Concurrent hash tables

    • Concurrent pools [if time permits]

Check the upstream repository at the start of class to retrieve the code snippets that will be discussed in the synchronous session.

Assignment

Assignments are always due on Thursday evenings.

  • Project #1, due Thursday April 18th at 11:59pm CDT

  • Project #2, due Thursday May 2nd at 11:59pm CDT