        while (w_it != waiting.rend() && a_it != active.end()
                && a_it->first < w_it->first) {
            {
                on_thread_t thread_switcher_2(a_it->second->home_thread());
                if (!a_it->second->get_preempt_signal()->is_pulsed()) {
                    preempt(a_it->second);