Homework 3: Clarifications and Common Mistakes

1.b The handler thread is required to block if the event queue is empty.
For (b).(ii), you need to use the primitive cv_wait(&cv, &lock) that atomically unlocks 'lock' and then blocks on condition variable cv. The textbook does not mention this primitive, but it was discussed in class.
2 There was some confusion about whether semaphore queues could be assumed to be FIFO. If you used FIFO queues and explicity stated this as an assumption, your solution was considered. If you did not assume FIFO queues, extra credit was given where due.
In general, you are advised to clearly state any assumptions you make.
5 A deadlock requires at least two processes. One cannot have a deadlock with only one process because the circular wait condition cannot be satisfied.
Please see notes/textbook for the difference between a deadlock and an indefinite blocking/starvation.

Homework Grade Statistics: 1 A+, 9 A, 7 A-, 2 B+, 1 B-