Homework: Deterministic Parallelism

Read: Efficient System-Enforced Deterministic Parallelism.

Hand-In Procedure

You are to turn in this homework before lecture. Please email your answers to 6.828-homework@pdos.csail.mit.edu, preferably in plain text.

Deterministic Parallelism

The code in Figure 1 calls thread_join(i) to wait for each thread to exit. thread_join(1) waits for just thread 1 to exit. If the parent is waiting in a call to thread_join(1) and thread 2 exits, the thread_join(1) call does not return.

Submit: One could imagine a thread_join_any() call that waits for any thread to exit (this is like the UNIX and xv6 wait() system call). Why would such a call be an awkward or impossible fit with Determinator?