19 Jan 21:03
Re: Futures - Reviews Needed (January 5, 2009)
Frank Mori Hess <fmhess <at> speakeasy.net>
2009-01-19 20:03:23 GMT
2009-01-19 20:03:23 GMT
On Monday 19 January 2009 13:19, Johan Torp wrote: > Vicente Botet Escriba wrote: > >> I would not be surprised if requiring a third thread for future > >> composition > >> would render it useless for many of Gaskill's use cases, libpoet and > >> asio - > >> which means most of the identified use cases. But I'm far from sure. > > > > Could you or someone develop these needs. > > The authors of asio, libpoet and Gaskill are best suited to answer if > Anthony's proposal would be useful to them. Unfortunately, I haven't had time to follow the future review threads in detail, or any changes that may have been made to the submitted library since I last looked at them many months ago. I can only summarize some things about the future implementation in libpoet in the hope it will be helpful in some way. As far as composing futures, the poet::future_combining_barrier supports obtaining a new future whose value is obtained by applying an arbitrary "combiner" functor to the values from a group of input futures. The combiner is always executed in a future-waiting thread, not the promise-fulfilling thread, or a third thread. The implementation relies on internal signals being emitted immediately when a promise is fulfilled, as well as internal event queues associated with futures. I described it a little in this post: http://lists.boost.org/Archives/boost/2008/06/138422.php With respect to an O(1) future wait_for_any, I added poet::future_selector, which is like a future queue which reorders based on the order that the futures pushed into the queue become ready. I was able to use them to reimplement my schedulers for active objects, without the scheduler using "future is ready" callbacks directly. To be more clear about my use case: I have a thread which executes method requests, and each method request has a group of futures associated with it. The thread's scheduler has a queue of method requests and it selects a method request to run when all the method request's futures are ready.
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
RSS Feed