M4: Concurrent Objects (Part 1)

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 Queues and Stacks next week.

Pre-recorded Lectures

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 5-20 minute videos divided into 4 sections:

  • 4.1 - Semaphores

  • 4.2 - Monitors, Barriers, Condition Variables

  • 4.3 - Barrier Code Example

  • 4.4 - Concurrent Objects and Linked Lists Introduction

  • 4.5 - Coarse Grain Locking

  • 4.6 - Fine Grain Synchronization

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)

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

  • Dates/Times
    • Section 1: Wednesday April 20th @ 5:30pm-7:00pm

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

    • Optimistic Synchronization

    • Implementations of Linked-Lists

    • Principles of Concurrent Objects

    • Interacting with the CS Cluster

Assignment

Assignments are always out and due on Thursday evenings.