THREAD_MAX
while (waiters_blocked.val < THREAD_MAX)
if (task_count < THREAD_MAX - waiters_woken.val)
MAX_WAKE_ITERS, task_count, THREAD_MAX);
while (waiters_blocked.val < THREAD_MAX)
while (task_count < THREAD_MAX && waiters_woken.val < THREAD_MAX) {
if (i > MAX_WAKE_ITERS + THREAD_MAX) {
MAX_WAKE_ITERS + THREAD_MAX);
pthread_t waiter[THREAD_MAX], waker, blocker;
struct thread_arg args[THREAD_MAX];
for (i = 0; i < THREAD_MAX; i++) {
for (i = 0; i < THREAD_MAX; i++)