31 #include <boost/atomic/atomic.hpp> 54 explicit ticket_guard( boost::atomic<
future<void>*>& latch );
56 void wait_for_my_turn();
62 friend class ticket_guard;
63 boost::atomic<future<void>*> latch;
80 template<
typename Functor1,
typename Functor2>
81 auto do_serial(
const Functor1& f1,
const Functor2& f2 ) -> decltype(f2())
83 ticket_guard guard( latch );
85 guard.wait_for_my_turn();
97 template<
typename Functor>
99 typedef decltype(f()) Result;
100 typedef typename std::remove_const_t< std::remove_reference_t<Functor> > FunctorType;
a placeholder for the result of an asynchronous operation.
auto do_serial(const Functor1 &f1, const Functor2 &f2) -> decltype(f2())
auto do_parallel(Functor &&f, const char *desc FC_TASK_NAME_DEFAULT_ARG) -> fc::future< decltype(f())>
std::shared_ptr< task< R, FunctorSize > > ptr
#define FC_TASK_NAME_DEFAULT_ARG
std::shared_ptr< promise< T > > ptr
worker_pool & get_worker_pool()
void post(task_base *task)