void apply(future<void> f) const { if (f.ready()) return; task_context* ctx = current_task_context::get(); if (!ctx) { f.wait(); return; } auto&& resume_task = [=]() { ctx->resume(); }; auto s = f.get_state(detail::use_private_interface); s->continue_with([&]() { s->await_queue()->push_front([=]() { resume_task(); }); }); ctx->yield(); }
bool ready() const { return listener.ready(); }
int future_int_f2(future<int> f1, future<int> f2) { HPX_TEST(f1.ready()); HPX_TEST(f2.ready()); ++future_int_f2_count; return f1.get() + f2.get(); }
int future_int_f1(future<void> f1) { HPX_TEST(f1.ready()); ++future_int_f1_count; return 1;}
void future_void_f2(future<void> f1, future<void> f2) { HPX_TEST(f1.ready()); HPX_TEST(f2.ready()); ++future_void_f2_count;}
void future_void_f1(future<void> f1) { HPX_TEST(f1.ready()); ++future_void_f1_count;}