Handouts reflect problems we have solved together in class.
Here are some links to handouts that you may have received in class.
Shared counter problem with no locks
Sample trace illustrating the need for mutual exclusion
Shared counter problem with non-working SpinLock
Shared counter problem with working SpinLock using test-and-set
Basic linked-list implementation: what happens if multiple threads insert?
Ticket lock using the fetch-and-add primitive
A queued lock using park() and unpark()
Using condition variables to solve the join problem
Using a semaphore as a lock
Using a semaphore as a condition variable
Implementation of a semaphore