Subject: Re: [boost] Futures
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2015-01-04 11:03:48
Le 04/01/15 11:25, Thomas Heller a écrit :
> On Sunday, January 04, 2015 06:52:41 Niall Douglas wrote:
>> On 3 Jan 2015 at 7:15, Hartmut Kaiser wrote:
>>> First of all, I fully support Thomas here. Futures (and the extensions
>>> proposed in the 'Concurrency TS') are a wonderful concept allowing
>>> asynchronous computation. Those go beyond 'classical' futures, which just
>>> represent a result which has not computed yet. These futures allow for
>>> continuation style coding as you can attach continuations and compose new
>>> futures based on logical operations on others.
>> They are also severely limited and limiting:
>> 1. They tie your code into "future islands" which are fundamentally
>> incommensurate with all code which doesn't use the same future as
>> your code. Try mixing code using boost::future and std::future for
>> example, it's a nightmare of too easy to be racy and unmaintainable
>> mess code. If Compute provided a boost::compute::future, it would yet
>> another new future island, and I'm not sure that's wise design.
> I absolutely agree. "future islands" are a big problem which need a solution
> very soon. To some extent the shared state as described in the standard could
> be the interface to be used by the different islands. What we miss here is a
> properly defined interface etc.. I probably didn't make that clear enough in my
> initial mail, but i think this unifying future interface should be the way
> forward so that different domains can use this to implement their islands.
Can you share your ideas of what this unifying future interface could
be? are you thinking on a dynamic or parametric (static) polymorphism?
What is the minimal interface of a Future that allows to build higher
and efficient abstraction on top of it?
> FWIW, we already have that in HPX and we are currently integrating OpenCL
> events within our "future island", this works exceptionally well.
I've no doubt you have reached a good integration on your island. The
main issue is how to be able to add new 'Futures' without been forced to
modify existing code or making use of internals of a specific island and
take advantage of other higher level mechanism based on 'Generic Futures'.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk