Esempio n. 1
0
File: await.hpp Progetto: hkr/ltl
 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();
 }
Esempio n. 2
0
 bool ready() const { return listener.ready(); }
Esempio n. 3
0
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();
}
Esempio n. 4
0
int future_int_f1(future<void> f1) { HPX_TEST(f1.ready()); ++future_int_f1_count; return 1;}
Esempio n. 5
0
void future_void_f2(future<void> f1, future<void> f2) { HPX_TEST(f1.ready()); HPX_TEST(f2.ready()); ++future_void_f2_count;}
Esempio n. 6
0
void future_void_f1(future<void> f1) { HPX_TEST(f1.ready()); ++future_void_f1_count;}