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

The slides/code presented in these videos are accessible in the upstream repository under the m4/resources directory. Please reachout to me on Ed 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 Sessions

You will find the links to the Zoom sessions on Canvas. As a reminder here are the dates and times for the synchronous session for this module:

  • Dates/Times
    • Section 1: Thursday October 21st @ 4:00pm-5:20pm

  • Discussion Outline
    • Quick Midterm Discussion

    • Q&A on the pre-recorded lectures

    • Implementations of Linked-Lists (Fine-Grain, Optimistic, Lazy List)

    • Blocking vs Non-blocking Algorithms (Go example)

Assignment

Assignments are always due on Thursday evenings.