<

Lecture #7

Administrivia

Our Story So Far

waiting for resource/condition using semaphore & condition variable:

acquire lock (mutex)
while ! resource
  pthread_[timed_]wait(cond_var, lock[, timeout])
critical section
signal cond_var
release lock

alt pattern:

acquire lock
while !resource
  wait(cond, lock)
assert ownership of lock
release lock
non-critical code
acquire lock
release resource
signal cond
release lock

Dining Philosphers Problem

philosopher: deadlock

get left chopstick
get right chopstick
eat
release right chopstick
release left chopstick

Sleeping Barbers Problem

Deadlocks

TODO: diagram

TODO: diagram

TODO: diagram