Instead, when the main fiber is passed to awakened(), stash it in a separate slot and make pick_next() return it only when the shared queue is empty. Update ready_fibers() to include a non-empty main_fiber slot.