Home > Lectures > Lecture Details

Ice Cream Store Problem

By Jerry Cain - Stanford
get flash player

Lecture Description

Guest Lecturer, Setup of the Ice Cream Store Problem, with Customer, Cashier, Clerk, and Manager Threads, The Different Constraints on the Various Types of Threads, Writing the Main Function, Spawning the Various Threads, Handling the Manager-Clerk Interaction Using the Inspection Struct, Which Uses a Semaphore to Signal to the Manager That the Clerk Is Ready for Inspection, As Well as a Semaphore that Ensures that the Clerk Will Wait for the Inspection to Finish, Writing the Manager Function, Which Performs Each of the Inspections and Signals When Each one Is Finished, Writing the Clerk Function, Which Makes Cones Until the Manager Inspects and Approves One; Why an Additional Semaphore Must Be Added That Protects the Manager Function, Why Each of the Semaphores Introduced So Far Is Needed, Writing the Customer Thread's Function, Which Spawns Clerk Threads to Deliver its Ice Cream Cones and Then Waits Until They Are All Finished, Creating and Protecting the Line Struct, Which Is Used to Keep Track of the Customers Waiting for the Cashier in Order, Writing the Cashier Thread's Function, Which Checks Out Each Person Waiting in Line in Order, Waiting if Needed

Course Description

Related Resources

Transcript   |  Assignment 6   |  Assignment 6 Solutions

Course Index

  1. Introduction to Programming Paradigms Course
  2. Data Types - Interpretations
  3. Converting Between Types of Different Sizes and Bit Representations Using Pointers
  4. Creating a Generic Swap Function for Data Types of Arbitrary Size
  5. Generic Lsearch - Prototype
  6. Integer Stack Implementation - Constructor and Destructor
  7. Problems with Ownership of Memory
  8. Heap Management - How Information about Allocations are Stored in the Heap
  9. How a Code Snippet is Translated into Assembly Instructions
  10. More Detail about Activation Records - Layout of Memory During a Function Call
  11. Moving from C Code Generation to C++ Code Generation: Basic Swap Example
  12. Preprocessing Commands
  13. Review of Compilation Process of a Simple Program
  14. Sequential Programming vs. Concurrent Programming
  15. Transitioning from Sequential Programming to Concurrent Programming in the Ticket Sale Example
  16. Semaphores
  17. Review of the Dining Philosopher Problem
  18. Ice Cream Store Problem
  19. Introduction to the Functional Paradigm (Scheme)
  20. Car-Cdr Recursion Problem
  21. Introduction to the Kawa Development Environment: Evaluation of Expressions
  22. Writing a Recursive Power Set Function in Scheme
  23. Scheme Memory Model
  24. Overarching Features of Python
  25. Python Object Model
  26. XML Processing and Python
  27. Introduction to Haskell