From: Frank Mori Hess (fmhess_at_[hidden])
Date: 2008-05-30 20:37:35


On Friday 30 May 2008 20:21, Frank Mori Hess wrote:
> On Friday 30 May 2008 17:41, Giovanni Piero Deretta wrote:
> > Hum, I think that boost already has such a dispatcher: it is called
> > asio::io_service ;).
> >
> > IMHO futures wait sets should be used to wait for very few events. If
> > the number of events grows significantly, it is probably a sign that
> > the application would be better redesigned as an event driven state
> > machine. I do not think it is worth optimizing futures for large N.
>
> That's essentially where I started. To do an event driven design
> requires the ability to generate an event when a future completes. That
> means a completion callback as part of the future's public interface. A
> completion callback has been resisted as too dangerous, and waits on
> groups of futures offered as a safer alternative. Therefore, I'm trying
> to insist the wait functionality be sufficient to build a decent
> scheduler on.

What if we specifically support asio for handling future completion events?
That is, the future lets you register an asio::io_service along with a
completion handler, and the promise just posts the completion handler to
the io_service when it is fulfilled. Then the completion handler won't
actually get run in the promise-fulfilling thread. Would that be safe
enough and is it sensible (I don't know asio very well)?